///////////////////////////////////////////////////////////////
//  Copyright Christopher Kormanyos 2002 - 2011.
//  Copyright 2011 John Maddock. Distributed under the Boost
//  Software License, Version 1.0. (See accompanying file
//  LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
//
// This work is based on an earlier work:
// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469

#ifdef _MSC_VER
#define _SCL_SECURE_NO_WARNINGS
#endif

#include <boost/detail/lightweight_test.hpp>
#include <boost/array.hpp>
#include "test.hpp"

#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && \
    !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) &&    \
    !defined(TEST_CPP_BIN_FLOAT)
#define TEST_MPF_50
#define TEST_MPFR_50
#define TEST_MPFI_50
#define TEST_BACKEND
#define TEST_CPP_DEC_FLOAT
#define TEST_FLOAT128
#define TEST_CPP_BIN_FLOAT

#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
#endif
#ifdef __GNUC__
#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
#endif

#endif

#if defined(TEST_MPF_50)
#include <nil/crypto3/multiprecision/gmp.hpp>
#endif
#if defined(TEST_MPFR_50)
#include <nil/crypto3/multiprecision/mpfr.hpp>
#endif
#if defined(TEST_MPFI_50)
#include <nil/crypto3/multiprecision/mpfi.hpp>
#endif
#ifdef TEST_BACKEND
#include <nil/crypto3/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
#ifdef TEST_CPP_DEC_FLOAT
#include <nil/crypto3/multiprecision/cpp_dec_float.hpp>
#endif
#ifdef TEST_FLOAT128
#include <nil/crypto3/multiprecision/float128.hpp>
#endif
#ifdef TEST_CPP_BIN_FLOAT
#include <nil/crypto3/multiprecision/cpp_bin_float.hpp>
#endif

template<class T>
void test() {
    static const boost::array<const char*, 101u> data = {{
        "0",
        "1."
        "77245385090551602729816748334114518279754945612238712821380778985291128459103218137495065673854466541622682362"
        "42825706662361528657244226025250937096027870684620376986531051228499251730289508262289320953792679628001746390"
        "15351479720516700190185234018585446974494912640313921775525906216405419332500906398407613733477475153433667989"
        "78936585183640879545116516173876005906739343179133280985484624818490205465485219561325156164746751504273876105"
        "61079961271072100603720444836723652966137080943234988316684242138457096091204204277857780686947665700052183056"
        "85125413396636944654181510716693883321942929357062268865224420542149948049920756486398874838505930640218214029"
        "28581123306497894520362114907896228738940324597819851313487126651250629326004465638210967502681249693059542046"
        "15607619522173915250702077927580990543329006622230676144696612481887430699788352050614644438541853079735742571"
        "79185635959749959952263849242203889103966406447293972841345043002140564233433039261756134176336320017037654163"
        "4763206692765418128357624903269045084853201341924359897308711937994829387301112625616588188847859778759637613"
        "6",
        "2."
        "50662827463100050241576528481104525300698674060993831662992357634229365460784197494659583837805726611600997266"
        "52038796448663236181267361809578556559661479319134354804581237311373278043130199388026471502344655048984258023"
        "29413862779668683613033675823844181156078490095600041375150275291651461225843861864920699060926664091188015739"
        "69725237770253874824784863348864259750658951309573876342725192688040202857185924973630809978452538550099964101"
        "92982586455881371696346748015289745233047358347477561989608918893149771864854848046936521600297952391960182380"
        "91657904112979752977128848801667547005586301968241421642338363617519213056151359841709828370363423435580976874"
        "24487526178010922324284883919536725153974582825630336511862808790203551930088145604026487771415650048376723275"
        "09413680642471748163518447130738316819195369884372334016560550055506302982338586524956112589663436231103943886"
        "74844019702154248446926734325728761164522433801156627031635317630180312268256176688917760955023889604244679905"
        "2170058177086899418295884628729493325484239488265581176789669723038386068440299732887079392590476730752257084"
        "3",
        "3."
        "06998012383946546543865487466779458212212931325292345360920786339428774168895114940961908166467541760759370742"
        "44926190270345429405099416216417975877667492169521054332143197658279274969526803993603118331066475990710709664"
        "11835890159498570726262642811302698221156226638369562313853818053150275629326559287811178118507288863835537725"
        "35550181070778545447895443834405205758132853217474114166659516983365541988620856642054467498643554872029717170"
        "39821407147194279125311851448763881130467005930754118279835744318178584311908929956900831886728481655335994631"
        "07780107006753124936339865774980990965870066108443783851885180857165489100951218831585029557126125899414086605"
        "42373794977570528185247073824741671612893506514342410201362222059007498227945177352958046758148141756202994673"
        "60056082071384828757479933907005475211690913625176546932420768549075771078197155322780840702603559549427777687"
        "42739361767926741397588677758250771833385666255564269109714659111910493525889012129170908878395488600591009374"
        "7846581784482514739511078915365085134049372956532238549125024207819856648144568313348689840437069402438807267"
        "7",
        "3."
        "54490770181103205459633496668229036559509891224477425642761557970582256918206436274990131347708933083245364724"
        "85651413324723057314488452050501874192055741369240753973062102456998503460579016524578641907585359256003492780"
        "30702959441033400380370468037170893948989825280627843551051812432810838665001812796815227466954950306867335979"
        "57873170367281759090233032347752011813478686358266561970969249636980410930970439122650312329493503008547752211"
        "22159922542144201207440889673447305932274161886469976633368484276914192182408408555715561373895331400104366113"
        "70250826793273889308363021433387766643885858714124537730448841084299896099841512972797749677011861280436428058"
        "57162246612995789040724229815792457477880649195639702626974253302501258652008931276421935005362499386119084092"
        "31215239044347830501404155855161981086658013244461352289393224963774861399576704101229288877083706159471485143"
        "58371271919499919904527698484407778207932812894587945682690086004281128466866078523512268352672640034075308326"
        "9526413385530836256715249806538090169706402683848719794617423875989658774602225251233176377695719557519275227"
        "3",
        "3."
        "96332729760601101334502876512018303152235975639619479270725806219673871802657165722877418785963403123274056479"
        "32953536228865576823564748759947646553751734998345995939694212511640273087471173966245241872854466233365203399"
        "13820978720176430215465338939984447826534933023141484862543765571546604297001338948375134812486194450210332949"
        "87995072089685196890751303705448870314051631971912137432499217943513505107459328579034234471969034380444279483"
        "17575690434016893569414664696975840861291591269395150414372627632572708909495742837612877749074701148365309503"
        "83264987999102974703524986389225489515342852629121662334901292322975881271541229899325825495432074303817839673"
        "45221251717788180706706197608063733887726205509696294918128904282730298886608490931339746624769514837195042182"
        "80939098488653846987879043275676074096785200698162734271837386808993089983447076307387909717512434089879181885"
        "08349518941876068427592513868658159977131885721960244821519078912587138691242470054107864903322942684464557829"
        "1191494275256827782462241863451662009236278099404458355906763210899504218702315420076418495087813163837093687"
        "6",
        "4."
        "34160752734960595617808776374477460723265336870727556185727396662220923171777437150069768940869308257867815441"
        "03546196765147228208117261527925650444366222660658062788515204204290333579229705891625284205192508929083683171"
        "54540342635058136807691252915152669586926525304075280115583067621639051432078115986884318711700889625182922866"
        "15299738096190444738533203161905492043851016820053962091086343470680514156330656554108208679889001485483033545"
        "41530181770247337804350831255920217011572818289799033769962376198617141661502115817976212376601226902153456366"
        "09799728649066534417253162418813747169004805982766408403946997189846396498970582746671501529485161428010742600"
        "38108590401332448730361188129358652703927446859710621067457990618378017703891730724396666299819790072397688972"
        "68645943050302685686173606921806542052834710686697258091502975362125530458756198571730762993254041063921030248"
        "28828478737270158016349017558325198405440967589772942310470355567549928970118887532179530801975376104487266527"
        "4699212168506825744026176396498070342412108305860593498228121005443577406939279064670940496621700555219734449"
        "3",
        "4."
        "68947209983475140722248849561783002846415813208241069816339837584532567997445983205028355189765592648498726557"
        "58786968460389643339445673551269229241587961003379434250163073293499620997874074698516457801989721178630024470"
        "87119160891992600583110842658312939022817912958461697028397309093512503747039863645081655402353335052810673842"
        "39291594323539816814423865582516577000094943855922812941268841597446572000848645702560088494072507948045804364"
        "96415346763073450966372102605076288731646633144144959508497186266849325593326561122562967759577579796627244689"
        "00475313135440591536873620173016545371152831605752982568571117700848026227595075127484138684946782930247375765"
        "77634559012937002405564693237564782661478500575417457048864770102766387138956802222948987452086048547098754786"
        "64879302362294196256918604094400928148795408204933582641327046968500320096289873490037204518195698355850325626"
        "52113915937212938414193806530064154077061451317005721941675550076456319276168011577932447904670831521031732409"
        "4382376913760654464482054763453064149650792978333973519208314091407227233989910701700664921088002874084578560"
        "9",
        "5."
        "01325654926200100483153056962209050601397348121987663325984715268458730921568394989319167675611453223201994533"
        "04077592897326472362534723619157113119322958638268709609162474622746556086260398776052943004689310097968516046"
        "58827725559337367226067351647688362312156980191200082750300550583302922451687723729841398121853328182376031479"
        "39450475540507749649569726697728519501317902619147752685450385376080405714371849947261619956905077100199928203"
        "85965172911762743392693496030579490466094716694955123979217837786299543729709696093873043200595904783920364761"
        "83315808225959505954257697603335094011172603936482843284676727235038426112302719683419656740726846871161953748"
        "48975052356021844648569767839073450307949165651260673023725617580407103860176291208052975542831300096753446550"
        "18827361284943496327036894261476633638390739768744668033121100111012605964677173049912225179326872462207887773"
        "49688039404308496893853468651457522329044867602313254063270635260360624536512353377835521910047779208489359810"
        "4340116354173798836591769257458986650968478976531162353579339446076772136880599465774158785180953461504514168"
        "5",
        "5."
        "31736155271654808189450245002343554839264836836716138464142336955873385377309654412485197021563399624868047087"
        "28477119987084585971732678075752811288083612053861130959593153685497755190868524786867962861378038884005239170"
        "46054439161550100570555702055756340923484737920941765326577718649216257997502719195222841200432425460301003969"
        "36809755550922638635349548521628017720218029537399842956453874455470616396455658683975468494240254512821628316"
        "83239883813216301811161334510170958898411242829704964950052726415371288273612612833573342060842997100156549170"
        "55376240189910833962544532150081649965828788071186806595673261626449844149762269459196624515517791920654642087"
        "85743369919493683561086344723688686216820973793459553940461379953751887978013396914632902508043749079178626138"
        "46822858566521745752106233782742971629987019866692028434089837445662292099365056151843933315625559239207227715"
        "37556907879249879856791547726611667311899219341881918524035129006421692700299117785268402529008960051112962490"
        "4289620078296254385072874709807135254559604025773079691926135813984488161903337876849764566543579336278912840"
        "9",
        "5."
        "60499121639792869931128243386880089385432377521078326495835339365228337765188797433638433752458537394171467057"
        "44562990455542075539831517566644946677745451618612727648966621311978378350382925082779759505143787044093893128"
        "06803589593017154364198333647616651125428605616230966582255385572870009973056613526322931048277060370231359977"
        "95899396723258283708659284220534304000728311717413345472853792896822724499122866947121737000944102509490771269"
        "19778358417034993512788749864711956241169590088384712450761378143280422989405844467629053403673847434253036092"
        "76321018361801459458139516432508856878761440982621913524318181369691375338635878731397251025936067547977237736"
        "10593636883665209271759639631465381618953021812982067002849796433240989364353192362974216155114226322430340671"
        "71931249222336948763104805766575786119509692569555110784762196354440111555519991757780200871775142323728903667"
        "34754311863635435563808728039284827173871963074804746849699430124991287602451134963126098545171903117047972898"
        "3056065167857905975608578156028237529803480674118040073278858492101950752173891861660337650836562272708715093"
        "2",
        "5."
        "87856438167412823505442087789707097199843492103867437517314210715732455817816855246687780176492612349299503748"
        "83647452602146761146149358621791392549585140581629668270696079138391334037573962811189827061481326675520008356"
        "47994077667880274855323323520240272246981990608159381971728656709564022893046586243897489455366878714885657876"
        "01288863899811544146566179125054361345491299666333144296548463580152591320203647485383402648565396566035890953"
        "87253054398730070087791666152096259541066662744587300371178772245285985656926049447237512893653379015471503973"
        "44470843545157877380623504326188974390096843208503955952138759852480819611238851794206681602224351043487381727"
        "93787396737481265016580386986993101160673821650068377182350730255005754757604683510524357896861879706617761317"
        "90826066334267384829853005058319198591967539087753298102223812960162701629163233092677980963129307056037580444"
        "44559585964075949558584750818511919962452688228707763616578874670045313322633956112911200892294810687892296950"
        "1818772368602431364032557596203542832723955707926899582549403366640173655837207681606270376881847522436644278"
        "0",
        "6."
        "13996024767893093087730974933558916424425862650584690721841572678857548337790229881923816332935083521518741484"
        "89852380540690858810198832432835951755334984339042108664286395316558549939053607987206236662132951981421419328"
        "23671780318997141452525285622605396442312453276739124627707636106300551258653118575622356237014577727671075450"
        "71100362141557090895790887668810411516265706434948228333319033966731083977241713284108934997287109744059434340"
        "79642814294388558250623702897527762260934011861508236559671488636357168623817859913801663773456963310671989262"
        "15560214013506249872679731549961981931740132216887567703770361714330978201902437663170059114252251798828173210"
        "84747589955141056370494147649483343225787013028684820402724444118014996455890354705916093516296283512405989347"
        "20112164142769657514959867814010950423381827250353093864841537098151542156394310645561681405207119098855555374"
        "85478723535853482795177355516501543666771332511128538219429318223820987051778024258341817756790977201182018749"
        "5693163568965029479022157830730170268098745913064477098250048415639713296289136626697379680874138804877614535"
        "4",
        "6."
        "39067324283344282612593456066836977441869915362953508565729525367923342752058036792717988019560288813706968456"
        "77932311660934936022581339690170211061979607805733455201951479794666965209869986063436354009130926493418080814"
        "53408980434179965937927922708909345397841622527432146275538251602966889120490579957574597331337784283815288321"
        "47374042143201083422723391419017423476330077549613969668943960552183346770788992856348755201584958184758568943"
        "49768541277646463745285102313294822213717650087758701616949959461636423912157083727660494880678559538254524919"
        "00236830142141866981904282198406822362807845586466344665076582332813482152015320774974225634990586766311313228"
        "41280086826370841460898715011137512038685864392079526912553523177019272440755510704279946872616455555313590656"
        "25784039140443384792467348229950568968976982234789396886404618635867410542964391202109060561090630962770079341"
        "51946284123507835906914733244675816372535792902468407592622807957863946668292770986363837395865741945094056819"
        "9235309909565628866621712875804422338283465878160167905868655940694866599376267372307930538102013930926440740"
        "2",
        "6."
        "63191504395654222093463225517095044257167358492883535520176025342395774211712657468200830942121109644363941340"
        "10761548512808504941585541646833262349861354253649509838599508444233906260858397863860491814334791305676062694"
        "77588037212559412899395447829806241059477262873942460159345306366624527627408910341206927208609891918726171168"
        "76270993379145692068344563800080161568845297279023268580882621139265056001709415926357601143767499984660052292"
        "05015685209846571627995350380500012248336598134804944866914567400523742490275833118429266728573383183873638547"
        "93779688936472084735930306427218087345510341837420490174630133279840175002704153489030443575290068032308365767"
        "63451403141885042163557880315832238470993889819388689962997828261446921618788229788339158160824684571810429272"
        "55611998995691441808296416489532588895522305621750503153532669454356399577165486037714108729865209937104288862"
        "29307003650917468837912442306497411084734102076600265234170937356637777135628474301844332989255577856028034699"
        "4374659397741791057120156235406414377547535942253181857891953344121916956463499217908574773942139693453317025"
        "3",
        "6."
        "86468424647826745014070025117717964024823451584566770298700199608686799810550334183271384036184024738713075357"
        "13830436350072970119200914833099051433782215491766416984101933198510637348024255711982258019646531673420782186"
        "30819701764025418879499090796511808605501357784143308663297852855842376861244456648327835996340248544888702189"
        "43262246632754953077685614238917113547631797236909830439953169012672877303232625810370072296875077876422022480"
        "55426136511284562437864882682701579851226453184312715780966423054312472150834279258264280122764959836109485736"
        "21994372299197201839952318086636154647775498088405644586299761630642587683996340977494191030193275580462043922"
        "19063653339901570969874642832022669018679996962548734797438261313737916279431144129292768130662584134756962916"
        "92426472512578013745169844199331563151036626204310460385781331101515910441120765658715989268300799047817531733"
        "94074142537525475668114391039705323166154148499405188828740137363595013988235606970953175864411847080516083299"
        "9937817745245584342493641231773899053479000283987005426862710197784974478355189700672119084639431501417983665"
        "8",
        "7."
        "08981540362206410919266993336458073119019782448954851285523115941164513836412872549980262695417866166490729449"
        "71302826649446114628976904101003748384111482738481507946124204913997006921158033049157283815170718512006985560"
        "61405918882066800760740936074341787897979650561255687102103624865621677330003625593630454933909900613734671959"
        "15746340734563518180466064695504023626957372716533123941938499273960821861940878245300624658987006017095504422"
        "44319845084288402414881779346894611864548323772939953266736968553828384364816817111431122747790662800208732227"
        "40501653586547778616726042866775533287771717428249075460897682168599792199683025945595499354023722560872856117"
        "14324493225991578081448459631584914955761298391279405253948506605002517304017862552843870010724998772238168184"
        "62430478088695661002808311710323962173316026488922704578786449927549722799153408202458577754167412318942970287"
        "16742543838999839809055396968815556415865625789175891365380172008562256933732157047024536705345280068150616653"
        "9052826771061672513430499613076180339412805367697439589234847751979317549204450502466352755391439115038550454"
        "5",
        "7."
        "30801444381621929576410414169825272457257572273051004511973439898925887398217614148081823016200949202834301901"
        "34112374199876901202971502696155007476535432232511740870601931279580970011543206100142223236655886609010356942"
        "01727519713747832103505597228622607596261458206910433389674460653687297596981868823753611902327108255612146486"
        "03121419802078232806394885971508914082308000592725279784010670779537521209568997392415395010518735400320816396"
        "05499055073742508666155441951832497139966653932280926357991515823953525065003444943372895058540302131290446920"
        "19068685727554985277682005661054369489870834464138965107639082860333071483679442949289948148511826372423697000"
        "47960905551015550891703778083820346244133873451184266447103836670847395501001367479270898875772403881434563877"
        "24806271355964037288276600616757189961066025999672317230466959475515701458349909989921518150967343072365763647"
        "95819406529589384430192416632004006793857867603298834230155464823542188055803245519320495284933764255373201096"
        "9678113537507747489174119978355952785701024597210876952009358763793824998038633400482176151812201288559378775"
        "2",
        "7."
        "51988482389300150724729585443313575902096022182981494988977072902688096382352592483978751513417179834802991799"
        "56116389345989708543802085428735669678984437957403064413743711934119834129390598164079414507033965146952774069"
        "88241588339006050839101027471532543468235470286800124125450825874954383677531585594762097182779992273564047219"
        "09175713310761624474354590046592779251976853928721629028175578064120608571557774920892429935357615650299892305"
        "78947759367644115089040244045869235699142075042432685968826756679449315594564544140809564800893857175880547142"
        "74973712338939258931386546405002641016758905904724264927015090852557639168454079525129485111090270306742930622"
        "73462578534032766972854651758610175461923748476891009535588426370610655790264436812079463314246950145130169825"
        "28241041927415244490555341392214950457586109653117002049681650166518908947015759574868337768990308693311831660"
        "24532059106462745340780202977186283493567301403469881094905952890540936804768530066753282865071668812734039715"
        "6510174531260698254887653886188479976452718464796743530369009169115158205320899198661238177771430192256771252"
        "8",
        "7."
        "72594721818665232400474478573212164113820580488963719814529844615257171391366083837598391841280737832475169393"
        "18227254188667186252920148976230121738172757350696910761931890703374371352358496474852223543486038624030825959"
        "22266253086595655320719535549969211782948039949166205611705232989034083852876594143019104011936147164924811525"
        "48641726819012461794117027835912991336708840836650710281453954679059886797070453447940199379600879845764678851"
        "27261525025696211390000036464745241077897264837570794313392693919501538120142648795449846299305606474487071535"
        "97300636752179520270285575421037009131136781489590577345106587715207919568798810167527811417745409743582649439"
        "59912543543231872348745595316009779251124673800869204892703157616225827295653493619371958957677652500482852408"
        "28467162113598639427818828508846562028984660705912978505060745935759778881317094139472640853334892580536981571"
        "77098917107860251657014190782265625723289814859337485675401385626410275035083061970191931988048172701777955774"
        "8226669494346220732543135051354216094958297646137955063860776076004529471252992090160099424056577358531318596"
        "6",
        "7."
        "92665459521202202669005753024036606304471951279238958541451612439347743605314331445754837571926806246548112958"
        "65907072457731153647129497519895293107503469996691991879388425023280546174942347932490483745708932466730406798"
        "27641957440352860430930677879968895653069866046282969725087531143093208594002677896750269624972388900420665899"
        "75990144179370393781502607410897740628103263943824274864998435887027010214918657158068468943938068760888558966"
        "35151380868033787138829329393951681722583182538790300828745255265145417818991485675225755498149402296730619007"
        "66529975998205949407049972778450979030685705258243324669802584645951762543082459798651650990864148607635679346"
        "90442503435576361413412395216127467775452411019392589836257808565460597773216981862679493249539029674390084365"
        "61878196977307693975758086551352148193570401396325468543674773617986179966894152614775819435024868179758363770"
        "16699037883752136855185027737316319954263771443920489643038157825174277382484940108215729806645885368929115658"
        "2382988550513655564924483726903324018472556198808916711813526421799008437404630840152836990175626327674187375"
        "3",
        "8."
        "12240393759049993775056085790344905374064693901884539671441829845338578772903259406144188243219398035169276840"
        "51300838316226942055451781105993601208197552034439458355062514914010489070985895267530389722733907460105781807"
        "41185896985711551360791806797203827232352315384586330095340105185710577781338904940758384870546060923938062091"
        "45857916456072372240571169803355429160587649756506023316970860684505132706954885924145348134169632738593180936"
        "26639296476575714561758871380806079843433698004588386024214928965231689125550720753203390981796702215602013500"
        "87891722238275134178670303665975303306455807687795898715998300152475162726847464578784441236155909735363031305"
        "00232072733480785298450742941376024222195955073652956648240243919431159576650278660779563988680861574614265500"
        "07190282809880811205413073693530117118837768951880842158911355032456603649968498962489619575948588801168810601"
        "43391560947567921577346659086745387151496023428624150951161938029495606617224093435405010080204886261145184305"
        "4051603030341075455071409992356385023478935197767533873271612844850782898615896024313859392116355309998479087"
        "7",
        "8."
        "31354547584695967940566378712267275288624539467359186240950261388420109063530469298372814586792322543394723656"
        "67835656180555764317605853990925880640952695214325626531682928857436719230013491132666257954067248287299135662"
        "20292610179933643374466685054386488682834612773992591037476604963901683442207870562666912849209450260701989581"
        "24599742654165567628853365640939746555309453490999458540074120276825684247685153740702582674467303878126564742"
        "37062549794781955264276398993346800813399375261160352275022314471182955259504385320018460780650134206929751448"
        "29197828630019133535864689964788016834035413332002509997527314498037936075151509806634373411333813059112831610"
        "78249341037269510562017916894714417589792091216017912110414165892331827272726552875986295229205099562827308056"
        "23837045519163196406282883673121730032355168384930847936665251226242588155619841150285157735399842621296114688"
        "68545990366028119708622357431124546983897276053252328720497789777836941919726001553854220712568053810158646892"
        "5791390594635838623637040633927106252991182923087124533741060760431823115120687161589051828955782395096092421"
        "0",
        "8."
        "50039005178969681405606694066857144339871874464321576831825225912653747873113563539576206921739603496466768191"
        "00596310150960821656523158016643597684118372232800409169139557083780710669356964332570202113507421938631568719"
        "63971829773107248579593397056734106156556617380504980929076639213644821636934129903526996740109823613284631158"
        "45819153103736613515518538534444209396391044515527047534370066166976494484027905402462724778219101349242704419"
        "34647266755003176510174978960357507446180921573121288773812626441577417746970043956571504462597928902680070135"
        "20929291274099161297945272110689563005318157480652004932983657344100993336621783568815458906918824018466753467"
        "95963611125059579096807842008824231421616080054119488676338739204001665175181321425845571967990452486774866455"
        "32219740920048138504345114031573018809821714917380829221043913582838584449669462870302847809546598354006886727"
        "02203273836263673730837988762949467161762849555045659822968295447513351087744078230297188528004762125742580392"
        "0989622793440104433373639653838151944603049040167070547749056560245913005898909784005016851657192883198696291"
        "3",
        "8."
        "68321505469921191235617552748954921446530673741455112371454793324441846343554874300139537881738616515735630882"
        "07092393530294456416234523055851300888732445321316125577030408408580667158459411783250568410385017858167366343"
        "09080685270116273615382505830305339173853050608150560231166135243278102864156231973768637423401779250365845732"
        "30599476192380889477066406323810984087702033640107924182172686941361028312661313108216417359778002970966067090"
        "83060363540494675608701662511840434023145636579598067539924752397234283323004231635952424753202453804306912732"
        "19599457298133068834506324837627494338009611965532816807893994379692792997941165493343003058970322856021485200"
        "76217180802664897460722376258717305407854893719421242134915981236756035407783461448793332599639580144795377945"
        "37291886100605371372347213843613084105669421373394516183005950724251060917512397143461525986508082127842060496"
        "57656957474540316032698035116650396810881935179545884620940711135099857940237775064359061603950752208974533054"
        "9398424337013651488052352792996140684824216611721186996456242010887154813878558129341880993243401110439468898"
        "6",
        "8."
        "86226925452758013649083741670572591398774728061193564106903894926455642295516090687475328369272332708113411812"
        "14128533311807643286221130126254685480139353423101884932655256142496258651447541311446604768963398140008731950"
        "76757398602583500950926170092927234872474563201569608877629531082027096662504531992038068667387375767168339948"
        "94682925918204397725582580869380029533696715895666404927423124092451027327426097806625780823733757521369380528"
        "05399806355360503018602224183618264830685404716174941583421210692285480456021021389288903434738328500260915284"
        "25627066983184723270907553583469416609714646785311344326122102710749740249603782431994374192529653201091070146"
        "42905616532489472601810574539481143694701622989099256567435633256253146630022328191054837513406248465297710230"
        "78038097610869576253510389637904952716645033111153380723483062409437153498941760253073222192709265398678712858"
        "95928179798749799761319246211019445519832032236469864206725215010702821167165196308780670881681600085188270817"
        "3816033463827090641788124516345225424266006709621799486543559689974146936505563128082940944239298893798188068"
        "2",
        "9."
        "03777677270990269726949426172862835196387072970673604230446563698972563128792797577778210699007499500445574250"
        "89876204493377875035177412255299561756483293212989442985024715332632332359674718551451382911466759962124284189"
        "58280946345991047523906606263163595973611608055069770607858646728929667972718057866128602444487254718338653430"
        "85096665002696889160030343332226214610521511200144375391579536397373156980251473081426535067176615086187889982"
        "85126024414534833911479411448107665500389943887993345707877581297583750331493454710398029676447052586143862089"
        "65717852402488879077788235132543376503410069927289658344324439488387188495051160317042470059664351630134641726"
        "40987633315418180257980416126510536269126886862377598402609093638096342316879109441931256004415158100347181648"
        "43450060699092535789319194780003262282008706831973468179614657438513437450053626008711436412032817436330750581"
        "11924462275738699759315387649943971866248714388768225522011305563067546972967347415693429779803099318976176972"
        "5773005794580557002197410638451009160363568740977414163266863712003892742672822692978407297710565133947310136"
        "7",
        "9."
        "20994037151839639631596462400338374636638793975877036082762359018286322506685344822885724499402625282278112227"
        "34778570811036288215298248649253927633002476508563162996429592974837824908580411980809354993199427972132128992"
        "35507670478495712178787928433908094663468679915108686941561454159450826887979677863433534355521866591506613176"
        "06650543212335636343686331503215617274398559652422342499978550950096625965862569926163402495930664616089151511"
        "19464221441582837375935554346291643391401017792262354839507232954535752935726789870702495660185444966007983893"
        "23340321020259374809019597324942972897610198325331351555655542571496467302853656494755088671378377698242259816"
        "27121384932711584555741221474225014838680519543027230604086666177022494683835532058874140274444425268608984020"
        "80168246214154486272439801721016425635072740875529640797262305647227313234591465968342522107810678648283333062"
        "28218085303780224192766033274752315500156998766692807329143977335731480577667036387512726635186465801773028124"
        "3539745353447544218533236746095255402148118869596715647375072623459569944433704940046069521311208207316421803"
        "1",
        "9."
        "37894419966950281444497699123566005692831626416482139632679675169065135994891966410056710379531185296997453115"
        "17573936920779286678891347102538458483175922006758868500326146586999241995748149397032915603979442357260048941"
        "74238321783985201166221685316625878045635825916923394056794618187025007494079727290163310804706670105621347684"
        "78583188647079633628847731165033154000189887711845625882537683194893144001697291405120176988145015896091608729"
        "92830693526146901932744205210152577463293266288289919016994372533698651186653122245125935519155159593254489378"
        "00950626270881183073747240346033090742305663211505965137142235401696052455190150254968277369893565860494751531"
        "55269118025874004811129386475129565322957001150834914097729540205532774277913604445897974904172097094197509573"
        "29758604724588392513837208188801856297590816409867165282654093937000640192579746980074409036391396711700651253"
        "04227831874425876828387613060128308154122902634011443883351100152912638552336023155864895809341663042063464818"
        "8764753827521308928964109526906128299301585956667947038416628182814454467979821403401329842176005748169157121"
        "7",
        "9."
        "54495610016641218053318050888027529952710202531153199575774210745792169686775867122286336893013980770883110393"
        "52276247681835887608812952471054772558240075235037900668496782095699528477874731344527911180393401955463971510"
        "37221763780532279742336542014648268991783469603857013190127430230028342218252126783300628535939314229543827909"
        "59273783367681208829081125750296573583945273785727616528225035230730367043489573228646448365807546311686441424"
        "49774744581803536698411386778170302569777395749023102537410798715992079606542350396229659006347057987250526384"
        "17332465481525919416513330139126146381338833351239203730709750042523052135462541819902842068021417404229013131"
        "99964786740911915995115427439794642825914605300283815175742959582878011011823566253034650282755730842497543625"
        "16860155646290856764428591494163022928590000434959287475899096540914976761145589909976331921510716640619162196"
        "75646857109277648126304220885687113521072394822563154202759322433797321040224381193148246260374735174838293585"
        "6754279051029935528906903178229158429642005574790839114924032587711525785116252481261999974051215181466473765"
        "5",
        "9."
        "70812956277849627020013008432023090142391629970752953381907255677408677683608283777972133699852226057384221251"
        "53205809614310720383763405854578937000465002140881359434675879559012762493638090947752116234678266669492794549"
        "42822297170536361448893705661482331041880611908411820876866524301686400660462287254651723588759081418463764743"
        "55637636250095973439621439980693326786799959495956257525100473767694685408934461084692899974993028686930219291"
        "78244751378615239569260450038337248573854206564790940731821444035106822165647006511804004501841080016750127934"
        "75971495190221865638374199662812298751885305018149453420534803686943784602237356112895945936464728623871639566"
        "27509412278526670700766402504793826839677765281076427340901353768173748184477638624215647772178191872811543334"
        "25891526542713197839436281070397609376888542863084993210239156246242466335500260092987138800226121526596929482"
        "84173068450171340198448762074365241535178102793292741653012039834285198529729843977907901477077794277600256393"
        "5500193296660859764949733318998449536542136965419683699384204783087426259828316123204761896336871719237458123"
        "7",
        "9."
        "86860538583256911820721127887475338860580572014113804764764567126280797502596779665406841324694419448453464475"
        "17503807626845356172247759078119619345186680215080975949071260888809391129195428784313017526586710196446975545"
        "31439640842267556740393510039535634129481178847542890847985862648824263966614963819503831246249782176979855437"
        "51868445611832757526512148116901823991753587937386414616186527759915861182575983960867544511432164162055576224"
        "54861716160625050079964860217388040715326195272414263801174132794725343764719692975756095807542054578757575776"
        "10805998306623214447817705618804478208330721405744697974295815587182451985023806765023272699255258737361365514"
        "48095090807729668471638614047172598418830416390391932045518785962567615347617805861430300764479148941742520703"
        "36631724314086199585348852392162387751475398122059785991739782084697310770666115041120714479285883336240902154"
        "61091044853050076963443004628416550886410411391339386328030728114387513715599008027009047422894941886125872104"
        "1533839901983210945961835326995464929819449092181088218771046197165161147748370518878104046099303783229072775"
        "4",
        "10."
        "02651309852400200966306113924418101202794696243975326651969430536917461843136789978638335351222906446403989066"
        "08155185794652944725069447238314226238645917276537419218324949245493112172520797552105886009378620195937032093"
        "17655451118674734452134703295376724624313960382400165500601101166605844903375447459682796243706656364752062958"
        "78900951081015499299139453395457039002635805238295505370900770752160811428743699894523239913810154200399856407"
        "71930345823525486785386992061158980932189433389910247958435675572599087459419392187746086401191809567840729523"
        "66631616451919011908515395206670188022345207872965686569353454470076852224605439366839313481453693742323907496"
        "97950104712043689297139535678146900615898331302521346047451235160814207720352582416105951085662600193506893100"
        "37654722569886992654073788522953267276781479537489336066242200222025211929354346099824450358653744924415775546"
        "99376078808616993787706937302915044658089735204626508126541270520721249073024706755671043820095558416978719620"
        "8680232708347597673183538514917973301936957953062324707158678892153544273761198931548317570361906923009028337",
        "10."
        "18197218462431161582111952539264656661433477798150730479799112887284541193585504568744710602027065030918053385"
        "88626998024526166707650425773136658258074400903070578475129191134262714581830920726995815514653824789384673555"
        "04032255882264015569014213825098166114446059843169833192986444108942840506996523623715072210566481161204920674"
        "16496267613099846001295802512703185774558531012929405484258390360668611212286904207161199234447058342337999617"
        "92271274742610225908970795751081615038981535248648458311885095799828145600663740483135495656806225462943772037"
        "31491392401486816706265194843708179792049796765599621985283274274529437790735239110679356537308200838693183707"
        "72198045330252052454290162693059248683000591314659903675131106177681559770755829173928282004816397191716469969"
        "37843435515414397834073681939587838302796801187221313907962667869992989319909211964361393188990384040622902615"
        "97702869373527542976398735947470053960328872105564664401676864774916219303865513428104268801172348278547192410"
        "5498640148127126652745316007086053077591814555887669601195725983108276147651242913586147914229810924624624361",
        "10."
        "33509314046336836919474364727074447097086936154801826041239503703343495444430216792313795009216492188008635939"
        "26760528756661011078126321844492668291462478393476503125536591219070509735210428947761875792828673301887541398"
        "51333707822660813843642659379040498993205802303976963038480061139480627996652519324110663045988145350403266422"
        "89673997455281852572985945814589870778013249259581071006948370961699686903679468330337467543525962626390456288"
        "25434791015203759110279895685375377254959267384242428992179590079538654788434703331515082118259553412887391533"
        "69885024803166236601066992952978419479548907882023561651930987349429554073434993236057618247768506490713863236"
        "86796046758823839357115061618266351131539979127132658770504772739973287802642165801348955328143120266712901095"
        "68535316587756940503116601114428904476514966934012890148992229020985082631236739332830184773141236150086303025"
        "05459944202088530415122856740972548674611468553261142884397069655372305487071091952425523892854173835645069651"
        "6302034137957025179252274911492305284875580251537498242752152958407117066303014561567387290966125697410459079",
        "10."
        "48597839381918445054159359885558121699839103866695561873115378079716014894151844802943245342437509629350645874"
        "31065554132339655732601450466677346771766404683525586939467074949776376839516117900277707447519492965025773007"
        "81357035084119423389099318378785160701550868259776821786756050171108775480133925239818616956336860985197400338"
        "71778030152560728757654382141671262807993217333913015214128152493683281015514469187844881815772234544875206479"
        "34057527710710187315407383842241034812304414618212426764289725514443697625658320934830119552552349454613146318"
        "72730744053921418327536428257727088973251781880374319783507597282677168955998421169845031344805337410468352684"
        "23057535101931480495293614988112596239063439563828982769227736720998745593802744569045263826558678211846342790"
        "87424431765532414870700646132525635436192820560367779661664927428988733468931949806424994253052465407314901679"
        "25268585637677634447686422701934423197696234896781731123550761420338840595526595130937751378309055028772275312"
        "8747261754207014515315881341170594023794216162541770211605362973081229737656368414853828067103315720270750873",
        "10."
        "63472310543309616378900490004687109678529673673432276928284673911746770754619308824970394043126799249736094174"
        "56954239974169171943465356151505622576167224107722261919186307370995510381737049573735925722756077768010478340"
        "92108878323100201141111404111512681846969475841883530653155437298432515995005438390445682400864850920602007938"
        "73619511101845277270699097043256035440436059074799685912907748910941232792911317367950936988480509025643256633"
        "66479767626432603622322669020341917796822485659409929900105452830742576547225225667146684121685994200313098341"
        "10752480379821667925089064300163299931657576142373613191346523252899688299524538918393249031035583841309284175"
        "71486739838987367122172689447377372433641947586919107880922759907503775956026793829265805016087498158357252276"
        "93645717133043491504212467565485943259974039733384056868179674891324584198730112303687866631251118478414455430"
        "75113815758499759713583095453223334623798438683763837048070258012843385400598235570536805058017920102225924980"
        "8579240156592508770145749419614270509119208051546159383852271627968976323806675753699529133087158672557825682",
        "10."
        "78141587097086009734708600256975401348331310691320020218751352004804371227851226111134816775227078780782704400"
        "52147356092727695527920302171183192478655274869472668345393510398722323555179529207792958553208776624344340893"
        "02868383880854490418955953060861828833022956166078549446407677882309027526266764943581836604667447009735143063"
        "50818780431222180790201620331842808081284885926261750690163105640448433632823843516031782239844290851513467744"
        "45891706273636784622362866483557972819012892787057761108736681050757369877123799164633273904139629258646240624"
        "50620018403302448353120425685494184121401561188841408058123061016697879111390551932389348780402464709509767631"
        "19793681484518126869088303530370704057823157270895417643395840936379584221387963751845754415954321339250901819"
        "49043536072178753049486872204759334059020258970699357154378751215836144836352430031659044940188023466979385706"
        "23476635487187338499041102612008297128137394379995852420980620023564245956287071028250765395211752580419730904"
        "0193746636407624935115304309270078857483676519373602411048897743124249850703751765985347181558029527375643215",
        "10."
        "92613933813824941839494851877453551423926430012932000378043993368985032792462220621686137310632779544638298654"
        "10973870577192080366472062964040509440033278743615823412810808078908898807870613199997974098405643999383690286"
        "99154596465019693581401702995072256439155901828510666479433850274478604710483110368760249425996181639834293503"
        "28700654747639134367544955697679786278080036154575736857325881532392171660142990988585546291910139133705176540"
        "23841228586351241202877223367260494855558385058038046339898004510183855157527283289679410125378588229499416948"
        "43161034564848988465806191004347507941818930748913728554554113379434183895855624564403283223095563238285191253"
        "14360835657666045942680288834053693331028618111109384750594304285763023041340181335524239948551682379650507696"
        "62481212059909922125002130317511819126236377187306085364203705624983640591322488295607424619160166746461204981"
        "59745957497051998042662041439311979882554182790406110614733511479011801245720731840618381842234691307812564264"
        "6008877987007918624713747892824771389677121777686596898164466209882065864762628266271132718624356253452793196",
        "11."
        "06897075115848051178114346592360054790751225726540302613781325417663994648010534522689154363395052648690999602"
        "61186473580786841783940799119071862844203935756997737196827013181251824477181865522696656125604284386736805412"
        "67909999544275652126288296808590100573759850481812006296053362345287923232160186272843943656508241306541906843"
        "79749960413601595348763566769123659605593998962030711530297996631108961214516178448122427054402440590510703322"
        "17484066565235938948140400311999208370258263622580614733135218175221722605324220534894428960790855444760163600"
        "39093908754408736305252065748033109178892202964871497682061733723962190892158321644226333216050878026158952350"
        "01294899884355106129583272445231346892946732366301525649188276362878449019281327682233343557842959286913827833"
        "74669003085509906226346278070859886444582772115212199422165986886962139084337282264595688658520928296714120909"
        "73197371285943541381804245169418852202687075162987209547743359310733341537394366722126605710836746473248446144"
        "8541683512088757459353259534085109191456436195932802460979824143610395941363551604400219577421540555259221554",
        "11."
        "20998243279585739862256486773760178770864755042156652991670678730456675530377594867276867504917074788342934114"
        "89125980911084151079663035133289893355490903237225455297933242623956756700765850165559519010287574088187786256"
        "13607179186034308728396667295233302250857211232461933164510771145740019946113227052645862096554120740462719955"
        "91798793446516567417318568441068608001456623434826690945707585793645448998245733894243474001888205018981542538"
        "39556716834069987025577499729423912482339180176769424901522756286560845978811688935258106807347694868506072185"
        "52642036723602918916279032865017713757522881965243827048636362739382750677271757462794502051872135095954475472"
        "21187273767330418543519279262930763237906043625964134005699592866481978728706384725948432310228452644860681343"
        "43862498444673897526209611533151572239019385139110221569524392708880223111039983515560401743550284647457807334"
        "69508623727270871127617456078569654347743926149609493699398860249982575204902269926252197090343806234095945796"
        "6112130335715811951217156312056475059606961348236080146557716984203901504347783723320675301673124545417430186",
        "11."
        "34924221246429839261028565829850152853950674668329270433803565485623908048536082846020507430428160317930476009"
        "78062552284631473271698301080420930678002935270860213755533376410950434831683129266708417862791056849585318715"
        "09131651122477280457930695269239120342802270691155290589721502201125592305692096859835744595168676715800717585"
        "85032838411375478477021690688817570414162566820268751196658613868949576091063552613961351632822252598859764980"
        "39746087649186814655905823222925759171803884806349350968882196634773164961078791229532476208824156202390581863"
        "30749692619709533479561401013564572179294568941081394714389426182830937967418291478849317341509136206328068680"
        "19068116591628515728481180957213133283154351669896098018101010708138645635708010672822821922535529316151238334"
        "93584040857696592187534301264584146553957310718712255292573453576205261351861700915480639583301267167270018138"
        "94129082006226321790116451145573510733887088107941688293622144475220202432114417883727565742673738044490040479"
        "9010786716522164241960362132578101367581203971478969200704781556667157536062389987737624943537002727294733986",
        "11."
        "48681380761311530780935516721521108237928967204382062085898154283588668313912715029161517404328334989237333530"
        "34882653574261402114885623063517466286983135609311347428616058487641764580040391132399123735354188924995726084"
        "31667264556464452240410101014511349682690566153385156486931102628456780783577079308426737658296507891772476075"
        "13680989857092204932189890811954100841072537027713465323260604795337782550094563520926538581863172270400325452"
        "74297836762746748179412232929420302325855877594918256439049163258491252026402004889017462470314144712637559338"
        "39457392489704581437967629940343870034039655870936981837719992281183665058208016546495565122330365326495975298"
        "72389080363888009786036985430787457469287273716821099747319154826663024578113175133679748214926591537563973687"
        "90555646602353958513206947086398520237613898204615597814371058763275824648368925762130837683909032578524176198"
        "94413141213027884769376894110715813935411344842637511783795312118238430542705309255206626045882274136462113397"
        "6801759853058864467919702658753108948232787444346415009083332605651415456404729714544798893173653905698148137",
        "11."
        "62275716447526530072773481095086913636625085077567567510367011670611204536816523588296120134495121867206923318"
        "37632298664953191556594884903747923711091159798037951823211201052540116242903833376452779227088949634320335447"
        "65028110116592451203025661365050867782024140543770476276220678204795976767514166142764541148954132005264256215"
        "81152703835362843272564915500000819969909462924651470389581405124830134368936744396521562205542661539221011051"
        "81022227884639488325310071375913459006514297537440977563220662148148970327960819157453757205132071390336936162"
        "22868607289819395786855414307426836617648620470545669574192124406264197796944680000647432669182566328902352663"
        "05498720308677384413789972705229289947563992674462978046736692223847287687037892767053612325085204587173825927"
        "03150193394825544156320863346704391789739396085519417964187584947528508961792799045137827190950383493042007176"
        "11623284126086457743296163784427292921836132489168392550670224539683367213853482186062760303663402241596377340"
        "1638269124800251684954328516467828750283529560003793822429188759689400075614871516086231035596052689743737025",
        "11."
        "75712876334825647010884175579414194399686984207734875034628421431464911635633710493375560352985224698599007497"
        "67294905204293522292298717243582785099170281163259336541392158276782668075147925622379654122962653351040016712"
        "95988155335760549710646647040480544493963981216318763943457313419128045786093172487794978910733757429771315752"
        "02577727799623088293132358250108722690982599332666288593096927160305182640407294970766805297130793132071781907"
        "74506108797460140175583332304192519082133325489174600742357544490571971313852098894475025787306758030943007946"
        "88941687090315754761247008652377948780193686417007911904277519704961639222477703588413363204448702086974763455"
        "87574793474962530033160773973986202321347643300136754364701460510011509515209367021048715793723759413235522635"
        "81652132668534769659706010116638397183935078175506596204447625920325403258326466185355961926258614112075160888"
        "89119171928151899117169501637023839924905376457415527233157749340090626645267912225822401784589621375784593900"
        "3637544737204862728065115192407085665447911415853799165098806733280347311674415363212540753763695044873288556",
        "11."
        "88998189281803304003508629536054909456707926918858437812177418659021615407971497168632256357890209369822169437"
        "98860608686596730470694246279842939661255204995037987819082637534920819262413521898735725618563398700095610197"
        "41462936160529290646396016819953343479604799069424454587631296714639812891004016845125404437458583350630998849"
        "63985216269055590672253911116346610942154895915736412297497653830540515322377985737102703415907103141332838449"
        "52727071302050680708243994090927522583874773808185451243117882897718126728487228512838633247224103445095928511"
        "49794963997308924110574959167676468546028557887364987004703876968927643814623689697977476486296222911453519020"
        "35663755153364542120118592824191201663178616529088884754386712848190896659825472794019239874308544511585126548"
        "42817295465961540963637129827028222290355602094488202815512160426979269950341228922163729152537302269637545655"
        "25048556825628205282777541605974479931395657165880734464557236737761416073727410162323594709968828053393673487"
        "3574482825770483347386725590354986027708834298213375067720289632698512656106946260229255485263439491511281063",
        "12."
        "02136689670232504751214837052312986850086383133636555409496823896132648668961329063060986421870266185322132152"
        "11701448267391188368047667853571572694775536356753264174403972755252732243831827044176139209024924394250581368"
        "61846204626155795604149515361113916782624367244364805538377594330304168849066367137313615505351036054026784342"
        "30053323536530562628456895952249982090966271007807844181389916800788497034878941250050075452157823398703144290"
        "09558182449825490593249314052067759681658697789673578678949212809806351598964422253804794344853941490798950989"
        "75829711923909590449239895558599987585761610988004201871229398615898947950658933823890933948287980669852485824"
        "31470054436552934600701653203411129264460820981085384656246114354234629894437243329488955643743226138626448401"
        "00579844319808606840135928070026153435302458230552287194862404115544729553555860135767866296645359954013075856"
        "56789855944112401117710255677633602630185821521761305801123111856331473936915340848607799847547030477320561015"
        "2830759374129202640779824926230644346880253659061205608241669503029250691241581669322113673069664040300361434",
        "12."
        "15133139695894732154602571455686512014975188778979224280502625132883472421219733897546268099251349556454285614"
        "32377800707082867615886711829398230527046072149152117757833141185434477765869902183850205483276767851442668275"
        "87041679291236998809169833652034346885774675107188363717375427120958548330331469713644263714560973379556087401"
        "63928379674241296246697966980754962025288588803836357748835011858832688042186399484899915971616203645266390369"
        "82352505612319544441359778240876504358105343789015081880171993801331134760442658432233574812308195804501595367"
        "60851069194595720578639777354119779894597533121720086676861479876836935231229337310087014504056885967072416037"
        "28937835289805703769457372421228613519568263478618016377660430006262058239282802446398679840996185866407137398"
        "87577174825475613963518050410729443551908819114265689677577478145683280934590715455378138742260694148005560374"
        "43074081423920499072691096284014890395465734167889197844231509824389552220015815379066712336293264663967214639"
        "1300060334021960329885543548050873714607049607780426796959929658969497274971918388832149882433776112378434610",
        "12."
        "27992049535786186175461949867117832848851725301169381443683145357715096675580459763847632665870167043037482969"
        "79704761081381717620397664865671903510669968678084217328572790633117099878107215974412473324265903962842838656"
        "47343560637994282905050571245210792884624906553478249255415272212601102517306237151244712474029155455342150901"
        "42200724283114181791581775337620823032531412869896456666638067933462167954483426568217869994574219488118868681"
        "59285628588777116501247405795055524521868023723016473119342977272714337247635719827603327546913926621343978524"
        "31120428027012499745359463099923963863480264433775135407540723428661956403804875326340118228504503597656346421"
        "69495179910282112740988295298966686451574026057369640805448888236029992911780709411832187032592567024811978694"
        "40224328285539315029919735628021900846763654500706187729683074196303084312788621291123362810414238197711110749"
        "70957447071706965590354711033003087333542665022257076438858636447641974103556048516683635513581954402364037499"
        "1386327137930058958044315661460340536197491826128954196500096831279426592578273253394759361748277609755229071",
        "12."
        "40717695633861219108717238338801627958284619285670989749665452897037899213722526962465459716981265791358776536"
        "99779946636530700600709582176756559672195094792342638905717358599494762112026557836025246676548757396012224731"
        "07460358043616901331296638130098128821464388482197452428681343514837935327506344788853296134342326074035675928"
        "52556096285486156815815613217132041347175402253932966898392373729431438258396536929276093153227260529917132739"
        "27559728897504704226043113857065570762959566602644918216789694969199672638429429945004464808633659900365281397"
        "95877893776458612579270575016857183253600505499435882056570943795049636349445295404792123869541514481527498205"
        "00067863145485261642534804355273601172582272184738959194409886558754405282031259467476772518768747851416794323"
        "09253336655217406754914545493066933803303046355614733012876287373212014898518464354302511069792971558150198002"
        "54299451718249719665846944695427223727764845131057809889415301014983949634031274832292939234354240119263579144"
        "3342446849357926898503374322883315593972409393470519281160983565963805711107788379316117321935018451317463295",
        "12."
        "53314137315500251207882642405522626503493370304969158314961788171146827303920987473297919189028633058004986332"
        "60193982243316180906336809047892782798307396595671774022906186556866390215650996940132357511723275244921290116"
        "47069313898343418065168379119220905780392450478000206875751376458257306129219309324603495304633320455940078698"
        "48626188851269374123924316744321298753294756547869381713625963440201014285929624868154049892262692750499820509"
        "64912932279406858481733740076448726165236791737387809948044594465748859324274240234682608001489761959800911904"
        "58289520564898764885644244008337735027931509841207108211691818087596065280756799208549141851817117177904884371"
        "22437630890054611621424419597683625769872914128151682559314043951017759650440728020132438857078250241883616375"
        "47068403212358740817592235653691584095976849421861670082802750277531514911692932624780562948317181155519719433"
        "74220098510771242234633671628643805822612169005783135158176588150901561341280883444588804775119448021223399526"
        "0850290885434497091479423143647466627421197441327905883948348615191930342201498664435396962952383653761285421",
        "12."
        "65785231913690226877484516479208842113516180896551794552312847313682436388319300926920973445704370799014794576"
        "87357718509226590879392775115842265975597049724341563061418697031268607830263630749575108233222183077768581512"
        "86948305635221192680870601025159853336795122235254709338570514335130167369800379884747089903762281584689350599"
        "84361548094312087706047838515949296761856523977786056317197470059469309575130956969333479838593163396440808643"
        "56270066190757023433598780191812725848826161342208170182063208964958296027351135838121377963924650053695239000"
        "48194358837164319413025712053293813516402107298878049686785513580590276692526909635887443300979496440450512409"
        "37443450969049764754263766152941761384959279794554776963843197505134073389039974935635373516401901220182221963"
        "34825106936172049588584462292486129117684021653955548443028996098787136328122645959968477838803895341464736220"
        "87860191800363091941158404634801473816273374171124404630873352175682373982730023839161181855217436969704328013"
        "5230378038036669764857912765848567411839492389221128518450325850349211951118365174902595493189143091128924607",
        "12."
        "78134648566688565225186912133673954883739830725907017131459050735846685504116073585435976039120577627413936913"
        "55864623321869872045162679380340422123959215611466910403902959589333930419739972126872708018261852986836161629"
        "06817960868359931875855845417818690795683245054864292551076503205933778240981159915149194662675568567630576642"
        "94748084286402166845446782838034846952660155099227939337887921104366693541577985712697510403169916369517137886"
        "99537082555292927490570204626589644427435300175517403233899918923272847824314167455320989761357119076509049838"
        "00473660284283733963808564396813644725615691172932689330153164665626964304030641549948451269981173532622626456"
        "82560173652741682921797430022275024077371728784159053825107046354038544881511021408559893745232911110627181312"
        "51568078280886769584934696459901137937953964469578793772809237271734821085928782404218121122181261925540158683"
        "03892568247015671813829466489351632745071585804936815185245615915727893336585541972727674791731483890188113639"
        "8470619819131257733243425751608844676566931756320335811737311881389733198752534744615861076204027861852881480",
        "12."
        "90365880827058452483715436320037516974569084077416924107843688487860887250890657253758738045200876669969427463"
        "45726834840639975755506362717246534706442221166298621207504273622834658505486588760226060303402875348318760592"
        "75988640705535030144354363210242251009786303368432070884750488539702567688880560860857563258835290820838217726"
        "05109767707082475241113029771842219887303738314876894780225187954162437433687918707794028759904325763022067415"
        "59354874008433704301896418503322037242979413682693250947191295393881165307605408058206874512520008288998516843"
        "58953055581827999368005587546622180584233966543475915871377081696205114793120811680882459529551437504589997047"
        "19817040780705970354750208989651458512099544274601571522686634080820851250943261398008156559800816967545097829"
        "98928240270234248524845103756193355528876937225771208802709529190373396585475974586241329821820837801569449366"
        "83352022713944591044643602081005893931859435034527081675123823772613583860868956952052312245024440445491310893"
        "2211269247818789816060744177821446724166244434311897023559474757455995497570838056986157112960941696803729504",
        "13."
        "02482258204881786853426329123432382169796010612182668557182189986662769515332311450209306822607924773603446323"
        "10638590295441684624351784583776951333098667981974188365545612612871000737689117674875852615577526787251049514"
        "63621027905174410423073758745458008760779575912225840346749202864917154296234347960652956135102668875548768598"
        "45899214288571334215599609485716476131553050460161886273259030412041542468991969662324626039667004456449100636"
        "24590545310742013413052493767760651034718454869397101309887128595851424984506347453928637129803680706460369098"
        "29399185947199603251759487256441241507014417948299225211840991569539189496911748240014504588455484284032227801"
        "14325771203997346191083564388075958111782340579131863202373971855134053111675192173189998899459370217193066918"
        "05937829150908057058520820765419626158504132060091774274508926086376591376268595715192288979762123191763090744"
        "86485436211810474049047052674975595216322902769318826931411066702649786910356662596538592405926128313461799582"
        "4097636505520477232078529189494211027236324917581780494684363016330732220817837194012821489865101665659203348",
        "13."
        "14486956753236970343541365393134251806774069902533962314135535321582847292017724910110007106776502190549036937"
        "38656249197132353617817043139899355573740668204032909567434296038746304150062741309218977952141761472466065644"
        "45416505741569346364219413607323060794720326291947944072987907139328701736835753824779102737278004452916595869"
        "43457411496099164053791439967385029067263953105490574991358767719456477262533892928496614594330715708268337030"
        "64597528372476669325238379807256995707509496936873280377426680968490544204144850652418667102858872780887677263"
        "33841433621855429950384822735960337148305271403738206052444698958512586819453966728869934259052993334171684369"
        "38704562285429190943338194967448524420998427032903790500584837465819993033824224707030688694845132875073630163"
        "62925163918396245228476769779932001778978178333151597445957345163009522871315976591629005355442432626542153837"
        "48171719047668629245490137361454100974040573975634532295970781842656766452914140078695667407910834038978395691"
        "6039981285613130422619726646882192158229279130067633381058950064006933912115038270746168224845260024281286513",
        "13."
        "26383008791308444186926451034190088514334716985767071040352050684791548423425314936401661884242219288727882680"
        "21523097025617009883171083293666524699722708507299019677199016888467812521716795727720983628669582611352125389"
        "55176074425118825798790895659612482118954525747884920318690612733249055254817820682413854417219783837452342337"
        "52541986758291384136689127600160323137690594558046537161765242278530112003418831852715202287534999969320104584"
        "10031370419693143255990700761000024496673196269609889733829134801047484980551666236858533457146766367747277095"
        "87559377872944169471860612854436174691020683674840980349260266559680350005408306978060887150580136064616731535"
        "26902806283770084327115760631664476941987779638777379925995656522893843237576459576678316321649369143620858545"
        "11223997991382883616592832979065177791044611243501006307065338908712799154330972075428217459730419874208577724"
        "58614007301834937675824884612994822169468204153200530468341874713275554271256948603688665978511155712056069398"
        "8749318795483582114240312470812828755095071884506363715783906688243833912926998435817149547884279386906634051",
        "13."
        "38173311849471217783876941566836313669346091785358692247346468395308588308827788454313201655575270828671673857"
        "41007241233972349668341335799303120558949874914731632596672292536486840252369343075578062661394846729290886120"
        "80633523093147067612558483695818827536275063195935514841373590920865965312578548954529988065057157198978981673"
        "62764725488993313604136868153402300723177611396171086932015966770533714117182414227787145721407312644583535361"
        "24425397143067303995240635567710414918725517399711583125030933885900593041624549493909270279061801044266813541"
        "51147605936007095313241471589709979306418761890491344617969544482362757297571861643553041223189762682121159163"
        "01204568548884712965255453558475368526187559378467056398276457807541106810697391627030860295592156441212947098"
        "89120500305321671981859220528418810561091642459738043327836329007402390418543140043048855442197107222952090170"
        "83573245853144479775256876575688548128029853195042482911151173623670306097851339371958726733451621250971824753"
        "5160103206224947196863863264871876290808068433102976710291998849009357718081807090905471789659277124839575212",
        "13."
        "49860636911114642459358030571634453334465888809545052183878432218118664778145097027262019948683840900856995174"
        "29739877130502525078353243003832198065078057206125867558943180721358516952593492926100016791442634700742497189"
        "48537559034789551536741902481067820112761396206365077958825842712930354785324731755800702788649791835052173564"
        "84769621601133034831695071383225633005792357284236385529593207735857968960517276605196352157995333895943494170"
        "41464679040078438099479890297375500511781991113346083206493978277223781060900609203238286306467871141396991230"
        "76808866263212427025746448058608831685069038302334530939249273298970582501691952602256336295408226618190441407"
        "11396310589500127135405270491024779388790519007695241209195793120189383116035582530922720748707660791377165552"
        "54983943200583248719785173513772917080626726235739995775731701263869010544645677727292023394850886826745691463"
        "82198351838580253144845051199401407868776284794852344127973707975042100393369149925539595439328295428662811905"
        "0279442723264746413216878905804503870657461514746916596067609999603045774298320322180133249625717533859092149",
        "13."
        "61447636017624443799265216512401084934894299480626753928997490116563679818224551788538346688535913182271001717"
        "77478230478862293910435061059034482102617694499353623610929608083252219728860071814777496237554962825789860436"
        "66471300738088582325762070505557101653785908332333215528357372693553823245805882631589902970439410267849152146"
        "50941783458322922965686936377927473939153015305837439934440258968380651188973430433284529166312360178144495429"
        "28117422626902025859794220329730506629124433815526321617718341415931415683837830843770074490481176348422362162"
        "86181266134684987391881422470538402435569142486436774831917168141389665963551667844185260844083414416276124895"
        "85679824790013815859060638812043516287515996652092920942814465228095391918411054208919508999122084721229842947"
        "31662074195162813392306707005283151329632622622723286645815527491117005404146816741085203466335075802165744347"
        "56789299532312352981545441424278118832856736565354391308626328579473648554687719113785706666471269174600504214"
        "3722635223400766012268118857311779477233465292274708583508374133748593182509627918787117455241091542819813359",
        "13."
        "72936849295653490028140050235435928049646903169133540597400399217373599621100668366542768072368049477426150714"
        "27660872700145940238401829666198102867564430983532833968203866397021274696048511423964516039293063346841564372"
        "61639403528050837758998181593023617211002715568286617326595705711684753722488913296655671992680497089777404378"
        "86524493265509906155371228477834227095263594473819660879906338025345754606465251620740144593750155752844044961"
        "10852273022569124875729765365403159702452906368625431561932846108624944301668558516528560245529919672218971472"
        "43988744598394403679904636173272309295550996176811289172599523261285175367992681954988382060386551160924087844"
        "38127306679803141939749285664045338037359993925097469594876522627475832558862288258585536261325168269513925833"
        "84852945025156027490339688398663126302073252408620920771562662203031820882241531317431978536601598095635063467"
        "88148285075050951336228782079410646332308296998810377657480274727190027976471213941906351728823694161032166599"
        "9875635490491168684987282463547798106958000567974010853725420395569948956710379401344238169278863002835967332",
        "13."
        "84330711459430808022843826239427256434596343163702958324024908115846905218379149168403953776024323043863463215"
        "16022467700817063042586192089471811215559491096430603765490105342479464734028031685014017988597008866099563434"
        "74750915165635990740345802222770885528894449519285586683416492340458031775111481023344097481374008848545235590"
        "45512188285811835118283928193228004231436112516529652682545875510567850589619620303079522508579293840764178527"
        "08688910729480334385710261322295627380646587526400594088017012104793668923859704481465512725231143313046840031"
        "53284851775322810256924586082365176642142243742374251893192567924033818039846604265588419962826799829037171550"
        "29667432596773859979953511512443869782774838236634207574918440346079042660684698188304960936189765536209496962"
        "21798505339106720245367168877405376645269053274617909080172273096809275302452571198400347118006550023013802032"
        "38629649523711643250394786111857450734801931568768605029263321747640555340863269507374438834182121778185419083"
        "8168727859124017786167368413748894627539001773837225674001211236781270826204317868935713403376698315709386501",
        "13."
        "95631557835258971630282987340194510919845371202282580094504721882673184380671350632023685341354308850839462985"
        "49306330756477989556178368665622436754180093476324880937959506547854538083370019416256575776948316707917842310"
        "90389461985759139354822791165710146844931160825962396468466501611937704664704804958138610109693667041306322225"
        "91623392021912736282633725638758150419573095472006586231661273719542842175639211322388884632558497329427876301"
        "89806285692737078454631222616459782467155377806421107402656800251572053070998411099760060179547316216902478018"
        "56399047619741048431734835727333177225889140722059732075658644495982020343644276466664989668261001568530578712"
        "31959404523504619735072119332528694151223558605645228729638308418293149001685678097012293128075708483730797960"
        "18588703327116777837136272491150569217486925114594308036945621245791848046986349492932929571328689798094081442"
        "39341771521081334918557233327761934416096559455843501143050685367100627652261192599150078968543628835043233867"
        "7840599188216306552667639876278614865474090999682755277088033035543967117665417559338997296158961230538684255",
        "14."
        "06841629950425422166746548685349008539247439624723209449019512753597703992337949615085065569296777945496179672"
        "76360905381168930018337020653807687724763883010138302750489219880498862993622224095549373405969163535890073412"
        "61357482675977801749332527974938817068453738875385091085191927280537511241119590935244966207060005158432021527"
        "17874782970619450443271596747549731000284831567768438823806524792339716002545937107680265482217523844137413094"
        "89246040289220352899116307815228866194939899432434878525491558800547976779979683367688903278732739389881734067"
        "01425939406321774610620860519049636113458494817258947705713353102544078682785225382452416054840348790742127297"
        "32903677038811007216694079712694347984435501726252371146594310308299161416870406668846962356258145641296264359"
        "94637907086882588770755812283202784446386224614800747923981140905500960288869620470111613554587095067550976879"
        "56341747811638815242581419590192462231184353951017165825026650229368957828504034733797343714012494563095197228"
        "3147130741281963393446164290359192448952378935001920557624942274221681701969732105101994763264008622253735683",
        "14."
        "17963080724412821838533986672916146238039564897909702571046231882329027672825745099960525390835732332981458899"
        "42605653298892229257953808202007496768222965476963015892248409827994013842316066098314567630341437024013971121"
        "22811837764133601521481872148683575795959301122511374204207249731243354660007251187260909867819801227469343918"
        "31492681469127036360932129391008047253914745433066247883876998547921643723881756490601249317974012034191008844"
        "88639690168576804829763558693789223729096647545879906533473937107656768729633634222862245495581325600417464454"
        "81003307173095557233452085733551066575543434856498150921795364337199584399366051891190998708047445121745712234"
        "28648986451983156162896919263169829911522596782558810507897013210005034608035725105687740021449997544476336369"
        "24860956177391322005616623420647924346632052977845409157572899855099445598306816404917155508334824637885940574"
        "33485087677999679618110793937631112831731251578351782730760344017124513867464314094049073410690560136301233307"
        "8105653542123345026860999226152360678825610735394879178469695503958635098408901004932705510782878230077100909",
        "14."
        "28997979296459888804653702544392904634926869096463657847566510989666889816047103805218492612824208200807189934"
        "44184921140050946072295733777832552069831871497137709875484943005092844538329601721866028257517525127400112068"
        "22965310731878663221408732182835419428674418921388428247682017853292902641094633654925031641157363239954497643"
        "63813049282555927573440821919365408184557750282445799561050658834799137991080213211138697839529041825282802420"
        "51379454218665561448727584030626615636178822706926814162499131369332023155252856087861647757703882420420084149"
        "24234526621614926024194156721588066172439929338626263627426594250456302911180488822059425182100690678184976763"
        "35890287690114955173006798161566987609176820798906658460071549234273868491939202950601784719549013691860350290"
        "69580960675884569751521212531321426347035716993287569668349433572526231363707210075671937119893845403234179825"
        "30521636411647204343032744762267344356249160751418617008695073272641359923660845392018259762079020360434149925"
        "2603323429275866821091530657037950087409657380807571921060480257877831704466578263052537696771142883837667113",
        "14."
        "39948315520131277112820569373511910015040936817284919328338325939794349940034309714669982010179921128053290109"
        "79828688660650916169722207860723532331591812462512916668982966008728885975214700393366748922112781560669442805"
        "26085074727923215099315369244314973758177163795161905224659231453738958954759692535888585135313785224088858851"
        "11439737593014328008063123280676883738375781110073550679073424135614151170981062295931141207954750945988909529"
        "36412656420669510625019084604237747484641036400610081271857751008108979431957256358635365498727651936976456111"
        "88306548314861798646545779246640227381521724181716350135240582311149705436124388648268657796122378067400948571"
        "49212577688424056007405168166382738269909396170651595585469725453074572705008969489554824260269472811344104877"
        "16638801651876698608693876104397820386663227664888754028406305427233767301780066332483940467863387166158701953"
        "35151833240018917870215304902126102429934347898254390525078940200339887443072939356146436754119388440228066530"
        "7850918818544192856877565661864230591257923543269259287766045586392906627455350388206936516877511705006505488",
        "14."
        "50816004152546378219681077246141593798468152500159666327969863029466393590842843975621347949778733712256734880"
        "11687447300524372638777391491271044047013009672846765153462292968052361902815148016221806543555516416870983561"
        "04648569744546852559008969056173614451568235018709148732753388030273661774352691760355549492167313040490929262"
        "05691077306482444403338427772801906947498870821918239180122554169393472286054995635753330822994538026064270720"
        "78361952092566154166904748856523531473204373911618483373304549076618565708179979210316820872299882348744668938"
        "41428193006020253551943892565735440940752975641082604386853068745567526137228486958660049821473651743710286013"
        "06252637376484286445886684379744212838387931458106081779374485182868193239505093540819627981214068133860521833"
        "61387375237142429814580328643754914782720125219937145864600464244591497580867134545593652723923600055555437968"
        "22277183965832550348820386023877549601887540921982065786787748953242930842007312728851945847051558582416223300"
        "2589242653827817278322155993680288963941768325132608929167231803325441134141466079523533004874074960297398614",
        "14."
        "61602888763243859152820828339650544914515144546102009023946879797851774796435228296163646032401898405668603802"
        "68224748399753802405943005392310014953070864465023481741203862559161940023086412200284446473311773218020713884"
        "03455039427495664207011194457245215192522916413820866779348921307374595193963737647507223804654216511224292972"
        "06242839604156465612789771943017828164616001185450559568021341559075042419137994784830790021037470800641632792"
        "10998110147485017332310883903664994279933307864561852715983031647907050130006889886745790117080604262580893840"
        "38137371455109970555364011322108738979741668928277930215278165720666142967358885898579896297023652744847394000"
        "95921811102031101783407556167640692488267746902368532894207673341694791002002734958541797751544807762869127754"
        "49612542711928074576553201233514379922132051999344634460933918951031402916699819979843036301934686144731527295"
        "91638813059178768860384833264008013587715735206597668460310929647084376111606491038640990569867528510746402193"
        "9356227075015494978348239956711905571402049194421753904018717527587649996077266800964352303624402577118757550",
        "14."
        "72310745385279504766089185089134852101939289604380101561797162844778398996562964067286607735617914793003926405"
        "48844362423376122815685515054605750659875846934795898267446279294839998923205284269250511553190404067373365705"
        "22942634239674703047310686338476335923532963117635039796288802156148141351666029297701497040980317238592980791"
        "46333722499321273029745884513068859519989245169501744940165087428867295768941041952038913106715648614000646525"
        "64905406159871623321437476286879872259083518836208723342177364371256650666793948295098750435124566209886842002"
        "88014331684732419942969728520900353147371974190401448375804931039709071953372809726054145050026131708034635538"
        "24668323960468495876399394612397816582907281133300958411084227515233863139984481949815396728572898890902996946"
        "44812449713503451035671101363587351933041787935726164774892898031020620075494054191750748238175302842601156452"
        "24329412436647629468849166648901984836112325872618209119111632480620713393041206858332318968868730843569300422"
        "7410778794481033787991938082837748996778982096020946799825701362360467247804846582233346459021849435486394414",
        "14."
        "82941285929033424631086207912098111621541367505427772846015316912242803053179155131460895254342025452047405169"
        "97954296244402311661887141413394532911541491603071708609940180070016261017915762557510278422457087524038813467"
        "37835127200458159845732446774737303087761617897753731524877979274694284246989924515961238107617606034599749358"
        "78542885454620338966840576398326342712479215385722633896269213429277517577186815835368399385357510926584315966"
        "24136867197010308317749181005637423090876543873298238850113918296817041690209369633579425326504751223838947047"
        "62660688395509048579028842902161021710125218954874257853907725336732908251411806376542719196020685236636793012"
        "69923460621685876272261739146897230397245550640281333892280179876805212825241459567659532460865510977960477821"
        "48791998851951221419883319817993999053278752506962511065678830257218401748568500747333591882058597483002531463"
        "65417718172020317784291713270729255629128989284339704570392817016165179877420238526685802462848129290842910715"
        "8745626477532254897607152843489836358490936853541807395474017791353789095258403694863885903856428866385139618",
        "14."
        "93496161377307725187422052785022139083546667697688294121542088739140994156998264309052405000555194525661087579"
        "46045864392050766773281378318859154769239371884763198843033880284347786378856604370045769280031694584512791649"
        "32299027997584048683596586922839913541602495362116464353240069317035849303355081215425573060479512202737316638"
        "23060833614226204891802863346855418563840680294634286512613284457483425609261395647744217257760538209176055637"
        "76256951832599871875185183132937072360851486597203051765984337363986545459745401275505488192448731938753525598"
        "11184409806491055519979644924919786472774928629299633871830563099861990874428632360222464968605344974898758387"
        "47853274999488139126021378392722024886833639307069280866052629226172236336642479996086825127070093486958302899"
        "60455591428363355858586332036652696876145134314146004076987087103822970399358514255536649174532275760391584685"
        "61813507967984063451571178214832669248201103347700628803622815207896581337053574160075506790432803927192596275"
        "8975702936379448509324264036066209770450856159966672496255612322665295729865499903170425957082810506551820498",
        "15."
        "03976964778600301449459170886627151804192044365962989977954145805376192764705184967957503026834359669605983599"
        "12232778691979417087604170857471339357968875914806128827487423868239668258781196328158829014067930293905548139"
        "76483176678012101678202054943065086936470940573600248250901651749908767355063171189524194365559984547128094438"
        "18351426621523248948709180093185558503953707857443258056351156128241217143115549841784859870715231300599784611"
        "57895518735288230178080488091738471398284150084865371937653513358898631189129088281619129601787714351761094285"
        "49947424677878517862773092810005282033517811809448529854030181705115278336908159050258970222180540613485861245"
        "46925157068065533945709303517220350923847496953782019071176852741221311580528873624158926628493900290260339650"
        "56482083854830488981110682784429900915172219306234004099363300333037817894031519149736675537980617386623663320"
        "49064118212925490681560405954372566987134602806939762189811905781081873609537060133506565730143337625468079431"
        "3020349062521396509775307772376959952905436929593487060738018338230316410641798397322476355542860384513542506",
        "15."
        "14385234053920991966969415266807575480213056452052911422905510702025459698708060606517717926655894900554616780"
        "11089894664863226391200155446121001161264758488222957146306674042780025430540877651260123695207749882929804823"
        "78607240819831183403574109472290470399416907492752726605411715253325510753261994252828188462682810154109677323"
        "95635352940956523833936171134446498172260449921444688124747319880141463935160081949861215514173175031182425188"
        "23714684606734325443399645596959933855453707336231367089097896345978026922587762215370241399967794400041904056"
        "72043586937852278039998388225423403089655371706009840507096943258860722799045059575160039158248912004954888878"
        "71308879176561632725149529198909071326267168454971331124669508431470566342925469164861785219922556915042449219"
        "86125000809530997425200716615625657674011024011250858696591746091527644535689099940477872177573673286692409322"
        "08965239046724380159618807514073365099714237020184187791611999400944874865322663504818181925628178478288087462"
        "2975340845523108222703652277923638344521781640569055426282343260980758922970221905010015543051560514662433274",
        "15."
        "24722454631152533700406363540832836668877867087149856397776689888301769550071839756279137788526446893414692975"
        "50544080185597077331715777153346360021007242495125392214774851264280715894226066393672643745253857483137929607"
        "37408667516619228196176535880477098918773859144321945753279661701266364778960943177407574056743200803896101394"
        "39373071348144208603123060441635042970438352839635547520159009911484177391583942890660185727222171105933528470"
        "89201745718938357549727957979705487561467680940950578965108092971745951832261598491593612429568718722411875570"
        "41173250736396511066958464216667019306876460024792827834065103287252656350146906954262717104381845075096939372"
        "99212668506570682062365718315772099190773112060151986368839158709871413187170462340820512206817583633523497617"
        "27350749598802358775860890853785340760259057433823505166593652654890358333190798767847250596060513312651361844"
        "27165752151004505587776699692531429983384276683066696165415074786453656442985855527292241511064973385767468262"
        "0223561453248275694304210618254529601023775975491296511721889498789622849848564452286751061016082497088131584",
        "15."
        "34990061919732732719327437333897291061064656626461726804603931697143870844475574704809540832337708803796853712"
        "24630951351727147025497081082089879388337460847605271660715988291396374847634019968015591655332379953553548320"
        "59179450797492853631313214056513491105781133191847811569269090265751378146632796439055890592536444319177688626"
        "77750905353892727239477219172026028790664266087370570833297584916827709943104283210272337493217774360148585851"
        "99107035735971395626559257243819405652335029653770591399178721590892921559544649784504159433642408276679973155"
        "38900535033765624681699328874904954829350330542218919259425904285827445504756094157925147785630629497070433027"
        "11868974887852640926235369123708358064467532571712051006811110295037491139725886764790233790740708781014973368"
        "00280410356924143787399669535027376058454568125882734662103842745378855390985776613904203513017797747138888437"
        "13696808839633706987943388791253859166928331277821345548573295559552467629445060645854544391977443002955046873"
        "9232908922412573697555394576825425670246864782661192745625121039099283240722841566743449202185347012194036339",
        "15."
        "45189443637330464800948957146424328227641160977927439629059689230514342782732167675196783682561475664950338786"
        "36454508377334372505840297952460243476345514701393821523863781406748742704716992949704447086972077248061651918"
        "44532506173191310641439071099938423565896079898332411223410465978068167705753188286038208023872294329849623050"
        "97283453638024923588234055671825982673417681673301420562907909358119773594140906895880398759201759691529357702"
        "54523050051392422780000072929490482155794529675141588626785387839003076240285297590899692598611212948974143071"
        "94601273504359040540571150842074018262273562979181154690213175430415839137597620335055622835490819487165298879"
        "19825087086463744697491190632019558502249347601738409785406315232451654591306987238743917915355305000965704816"
        "56934324227197278855637657017693124057969321411825957010121491871519557762634188278945281706669785161073963143"
        "54197834215720503314028381564531251446579629718674971350802771252820550070166123940383863976096345403555911549"
        "6453338988692441465086270102708432189916595292275910127721552152009058942505984180320198848113154717062637193",
        "15."
        "55321941999192909739144782711015097827614734275561108713261285626354258779489224390652763337390012924223178599"
        "39226322742544533781551368669476914135913677167870569871992237487074670090250710391585542749455379676350917711"
        "97351723187066327453183887178046363960719814297174200677165073465692725493619076089149843317017809607596662107"
        "88379699436417494784123263876649532467847214614262560261426423567869595447693339832249471811382969450308403345"
        "49653119000316260143077956508210419522473362562194412180815212162799927642323378945617932239804210721035735661"
        "55369822940696822261066481215367954069777684502812304295655011036350744435771065986325097469071337137212898956"
        "72440460523221758788680977781383458439713188069794354810651720441843368532668705056591677929881329485834679774"
        "04968694959221486656240243417746389624264522689502159242881137811206933660406168854853625265097649099854630342"
        "45570338477537976012963736988451831740607501475312543600648702667615829953345035477790809720502656409261841681"
        "3042451075357865075958584347010560603909401672674530473016380690156057342486458799820056849296157803970758151",
        "15."
        "65388855779942853366153224733759669916560950214357373632460996367601653662021965023394702595594176741839446843"
        "00887447920118633727001251716571523443596918848444675379732072543560564133448336770198458947224033362634921875"
        "94473529648820105313588218738589863121077164638145443372177511689907229285786639401142720480840361807890924894"
        "11834134872330214020172727889667061215864695797308974999757488684905185513373188086528162208842501940975011345"
        "81362589451191335370815112714612837896607752466579681001969484402775834313370422194201064429923758665189369487"
        "88812896895414614857882055188995162017116605488270875917393438178145133845929173712319876296727200933001519013"
        "52510717558061524730369897437443017367511644505873188937842075149988790269135481079578225849962967311059799825"
        "93758231329776234669559571495246544966721659816165141685360821041442768655874261766471614879723279695129605131"
        "43477427715465993830811646612295262542952670743315521345546749854867187975615797269004239663472300232678353503"
        "5168700456971324492035298595293576869795744389366846556161860716979752870417581809090754427851499367674362389",
        "15."
        "75391442256792462098301123118675624892750004829829796604679789447302628819569360272471868967334595053377345826"
        "10770093614470487327551772081823931905589550005108629069012648755348782514228521197088346998693251351381154586"
        "49625715331447841946651213506247785763655954618727631238085210998597640478337632316374699558747521521322958958"
        "00706168678376753379196062839015881893022955107316160012586770002179187982505646963254809089666293899977697178"
        "89909303798070409227548291667767301493099723866749466998823232247966469030308331085073105913646005885136696884"
        "72509804006570402744446976509447060093014684577953053116193807523491562267854581934466760935067421164914525996"
        "39744991324581515109722958145872345894773824777243613185427525462819376470087280521742170507865980395170098526"
        "77136114528982242252373617954020044735443912957185708403871758652762532215592658585695740093871059422733899587"
        "93564309671425851393780483167377555139095759691103129596390432663698658761482919974840037828427048982111925809"
        "2593559132400132757457303025648114989713809051372859786312670557557455024113430415444733469786577609605818156",
        "15."
        "85330919042404405338011506048073212608943902558477917082903224878695487210628662891509675143853612493096225917"
        "31814144915462307294258995039790586215006939993383983758776850046561092349884695864980967491417864933460813596"
        "55283914880705720861861355759937791306139732092565939450175062286186417188005355793500539249944777800841331799"
        "51980288358740787563005214821795481256206527887648549729996871774054020429837314316136937887876137521777117932"
        "70302761736067574277658658787903363445166365077580601657490510530290835637982971350451510996298804593461238015"
        "33059951996411898814099945556901958061371410516486649339605169291903525086164919597303301981728297215271358693"
        "80885006871152722826824790432254935550904822038785179672515617130921195546433963725358986499078059348780168731"
        "23756393954615387951516173102704296387140802792650937087349547235972359933788305229551638870049736359516727540"
        "33398075767504273710370055474632639908527542887840979286076315650348554764969880216431459613291770737858231316"
        "4765977101027311129848967453806648036945112397617833423627052843598016874809261680305673980351252655348374751",
        "15."
        "95208465814964424568350735007030664517794510510148415392427010867620156131928963237455591064690198874604141261"
        "85431359961253757915198034227258433864250836161583392878779461056493265572605574360603888584134116652015717511"
        "38163317484650301711667106167269022770454213762825295979733155947648773992508157585668523601297276380903011908"
        "10429266652767915906048645564884053160654088612199528869361623366411849189366976051926405482720763538464884950"
        "49719651439648905433484003530512876695233728489114894850158179246113864820837838500720026182528991300469647511"
        "66128720569732501887633596450244949897486364213560419787019784879349532449286808377589873546553375761963926263"
        "57230109758481050683259034171066058650462921380378661821384139861255663934040190743898707524131247237535878415"
        "40468575699565237256318701348228914889961059600076085302269512336986876298095168455531799946876677717621683146"
        "12670723637749639570374643179835001935697658025645755572105387019265078100897353355805207587026880153338887471"
        "2868860234888763155218624129421405763678812077319239075778407441953464485710013630549293699630738008836738523",
        "16."
        "05025225952424230476581967579445063801745757057598392782532303214452508296394819109614719314531165645387384974"
        "39478557175108609739886591120839569490500534822875304849736326488209685631259797055597162087990625950864597269"
        "36476696439381910220384322311324311842667158228425675297979222265812106596748979173989790155646435957100594433"
        "52469890936734733079221279530307438119561125278552138002085349216421314013663281047590812925084492813534275326"
        "25724955074014554055167375410461346511957866858023371199864971286184642392511378752324547642788064420065819699"
        "73732340478993813011430415700250631824776678727662451843205610570532862275000020643527510645068296457430189247"
        "27156790212663685861627649985859076214815328612990233297092150024030017230155438725911212229302175380677395937"
        "39604698257682609428654874555491602494919829715215979019400567591170934142751177256545981785724618392334660345"
        "39567651851253170948437286695861359377114335272525774644591906813518600939775927863326912771942619136594543319"
        "4069995854695522773330552489914970861258642696680947645047295192118341734641074275298677776747132725952692040",
        "16."
        "14782308077323588040579111563599755786432696833641950055632938023259836790089849741426487145644423964717300403"
        "16476902098875094502600153583773509818474040254222873787323736489817652011370386406266250541511480202000072979"
        "59878815562787393121096595035600314225225829183114125474497018547223659528472930900422571056329570935652356761"
        "02663972337897152677148044253966683307177426032679699547040577669750764306273344435975984221647297338652341764"
        "55146920250925398679022857258803104782468690438474584298601058258695871408692587584948563444892617899745726543"
        "71479741368435774555532903805659357273398992415329846606055915351381217764829103416961417751228325775595908793"
        "96695057203232425596689324990035428188476516910925129879522571776341878492222788574311122388241033351982891051"
        "19122009380272498965826349738709572199722545419521302521285254070487073289909851344138939360922891594389079867"
        "49814387358475062358964910153101756497870813839062073532151377914871215417647458320854433050365165471690490711"
        "6042682578169464107303714557388993154579350605533888231564568424188460142954331592433579506586890005695885131",
        "16."
        "24480787518099987550112171580689810748129387803769079342883659690677157545806518812288376486438796070338553681"
        "02601676632453884110903562211987202416395104068878916710125029828020978141971790535060779445467814920211563614"
        "82371793971423102721583613594407654464704630769172660190680210371421155562677809881516769741092121847876124182"
        "91715832912144744481142339606710858321175299513012046633941721369010265413909771848290696268339265477186361872"
        "53278592953151429123517742761612159686867396009176772048429857930463378251101441506406781963593404431204027001"
        "75783444476550268357340607331950606612911615375591797431996600304950325453694929157568882472311819470726062610"
        "00464145466961570596901485882752048444391910147305913296480487838862319153300557321559127977361723149228531000"
        "14380565619761622410826147387060234237675537903761684317822710064913207299936997924979239151897177602337621202"
        "86783121895135843154693318173490774302992046857248301902323876058991213234448186870810020160409772522290368610"
        "8103206060682150910142819984712770046957870395535067746543225689701565797231792048627718784232710619996958175",
        "16."
        "34121707692338396069636942016124866912121280813565427398349145293709565810955361999492276675631966697518817203"
        "30847867749383217493562824508538192834810436530795251403748280815986888683090444963568544342830253998350516075"
        "15358702243412387084009896448573365043827048092425743953483386894323518311923913690941609208424884900176315736"
        "25886335689690484283878708863331914180721956130267630627157049793895136063186217663006135123419698982009383197"
        "02408657590012474789777007123467808768282135872999150490149110158277006503250724953661837621574840115483372782"
        "86030327764728404711906400753359364839659433012308110260501499088347268583504538987576742567211354160533884861"
        "01284647726625739776177612134146905204802624086500178384314079620179001403240462531433161454707379633551770058"
        "51379248147035370433387833420553321888460391167558380062662113254804107448975955978227341116496076743206260952"
        "10636514382744313513726714501518653254575513306628033638434567765436784703187320274446993626423811324044711751"
        "1360963000412145400308169673233984915808549522819952866570114619293558801485679439444177553637843192666077022",
        "16."
        "43706081416997795332724740436127731613360967337704885510724839588256709660301027706716920263511627580604269159"
        "52129701085867802729318106406251695179863885464546615845148228047143539122431375925160247632834389582278394024"
        "33048048710441109095172462035564435115216917054500940736255985371596025417460999236751644500293733791545234403"
        "40276331378046718690092430121912162736281438104226536455424492206324415028892913802555973799751059060104942990"
        "91436098925393391453500383425028779847395212818216089937829167091842984754080301999529208965785570901563511025"
        "23783832224914059255312394151354055740648706263067880155686090770901366318273646162883476307476862493675001476"
        "89742864175331804453487381693514418866572014239386210619459839270619584093742470979438655628519727171222049672"
        "34909902165207404812597672553085816768537588350650139595857211821910608937442187518672584714044022382415383735"
        "64399142090760819540067348684319991087990082959888127904086131593109452402838097824118337677180646259100755216"
        "8307790120399348941306657109189741410463773559051033330925696056841916167522766228211393262242421521807262490",
        "16."
        "53234892150271584468808257633362765397666542542720887648098756812577109019865146912513372815895977190304809792"
        "13983912333851607240138763154510692762929645134059390271108447868644173448984649545846075027064353386413401987"
        "05784007825954758491636479758251565454590803621730664169376188515867591916106130400067381048724859197544495864"
        "32174460482401027276841321236806363392763568094944549129187735189400166805350885162531237646708822024592828125"
        "65757616402645579638779334204722728987624467180608880772319027534713555789150175287611585325048568498467487723"
        "80817909025734843812380707784959423772500285716531891658773311905490123801258529664710674514326549019001374065"
        "96502598637190192893494885683592995623345304289829680333768925980056852396230588687426204483702267904303477121"
        "28643558758014939672725409586893221245647244200231825250935867451601474997763673733348363862073700502793354719"
        "02216193145843592037833055718260544006987897963838154935311462945003434193142715076157784934283912129528473799"
        "3268351881523490532278330519022627550209271545051013287036978208888323804801374289519895876593198148288412392",
        "16."
        "62709095169391935881132757424534550577249078934718372481900522776840218127060938596745629173584645086789447313"
        "35671312361111528635211707981851761281905390428651253063365857714873438460026982265332515908134496574598271324"
        "40585220359867286748933370108772977365669225547985182074953209927803366884415741125333825698418900521403979162"
        "49199485308331135257706731281879493110618906981998917080148240553651368495370307481405165348934607756253129484"
        "74125099589563910528552797986693601626798750522320704550044628942365910519008770640036921561300268413859502896"
        "58395657260038267071729379929576033668070826664005019995054628996075872150303019613268746822667626118225663221"
        "56498682074539021124035833789428835179584182432035824220828331784663654545453105751972590458410199125654616112"
        "47674091038326392812565767346243460064710336769861695873330502452485176311239682300570315470799685242592229377"
        "37091980732056239417244714862249093967794552106504657440995579555673883839452003107708441425136107620317293785"
        "1582781189271677247274081267854212505982365846174249067482121520863646230241374323178103657911564790192184842",
        "16."
        "72129618688370695960574270523301078389932652398427086468608518427033263714664605502852938610738533364301839271"
        "50625107744808082403658130218547877377223408626609338367841882539006706085525641360251738080907390644127125042"
        "59523027988063714336820233104689334204836546487559659633964043151984340548060532718923362128881432934135325567"
        "30087104604398797473975020259417474715731278684120382501500056990656906198986448799678589019300288887173174230"
        "09915633225475656314991246247179300655948036458387420845855288877301555946710757857081888614708196039221016144"
        "38420934760089896757234835499768953632442492555016736764912495654809807940710467313373801922326723828386598576"
        "49617368357186471686002533466703250187299368869143896491473615852601449383505023627793870538219267828397070716"
        "11980639055740818753798912061341260095450383120266085280004484309135011098574017285860156410583019562874766816"
        "14190202363253212754807149772703898489635345432611706015236851402817747062158205937030641812353055477725259019"
        "2842881894048535435254976906742189935635359698594705800588739642243011198473083262224352068070947521888133964",
        "16."
        "81497364919378609793384730160640268156297132563234979487506018095685013295566392300915301257375612182514401172"
        "33688971366626226619494552699934840033236354855838182946899863935935135051148775248339278515431361132281679384"
        "20410768779051463092595000942849953376285816848692899746766156718610029919169840578968793144831181110694079933"
        "87698190169774851125977852661602912002184935152240036418561378690468173497368600841365211002832307528472313807"
        "59335075251104980538366249594135868723508770265154137352284134429841268968217533402887160211021542302759108278"
        "28963055085404378374418549297526570636284322947865740572954544109074126015907636194191753077808202643931713208"
        "31780910650995627815278918894396144856859065438946201008549389299722968093059577088922648465342678967291022015"
        "15793747667010846289314417299727358358529077708665332354286589063320334666559975273340602615325426971186711002"
        "04262935590906306691426184117854481521615889224414240549098290374973862807353404889378295635515709351143918694"
        "9168195503573717926825734468084712589410442022354120219836575476305852256521675584981012952509686818126145279",
        "16."
        "90813211081198007032372413382544366907448630622041193332436836605997752267535658932097133897677661631613423580"
        "21127981271381134650847016286405604432987298022336098638563576267935354939301846494369816655337783246226209880"
        "07501131586355391858595913504065552289654660238871963950906549509361444433014511210945609775277269846879360970"
        "01228109585346160007687159177141252755382256254137485334736851691908323316171132465798945044943072843123321659"
        "45233891016849490928121382853036960384597592081111721835630475340517447933339362704327966786541965781642013462"
        "40362151290264721923078844865573019976224106844734946383887550139634984032768991973733259530201204180249546770"
        "65312670729997139014033932230676073826397709621036693046551438625840520382842087638320299317538110220411220251"
        "00304848953045363327544205876760304756720535938198106981928743202962212743831014622551526319592553193580573329"
        "44170862493528160376298994945687371254579142786149010996831491036823455962984112413280722059532131868502211511"
        "1820471491845170412521830502033004342105561816928208532788908700951934092518100776316736470776442731692226738",
        "17."
        "00078010357939362811213388133714288679743748928643153663650451825307495746227127079152413843479206992933536382"
        "01192620301921643313046316033287195368236744465600818338279114167561421338713928665140404227014843877263137439"
        "27943659546214497159186794113468212313113234761009961858153278427289643273868259807053993480219647226569262316"
        "91638306207473227031037077068888418792782089031054095068740132333952988968055810804925449556438202698485408838"
        "69294533510006353020349957920715014892361843146242577547625252883154835493940087913143008925195857805360140270"
        "41858582548198322595890544221379126010636314961304009865967314688201986673243567137630917813837648036933506935"
        "91927222250119158193615684017648462843232160108238977352677478408003330350362642851691143935980904973549732910"
        "64439481840096277008690228063146037619643429834761658442087827165677168899338925740605695619093196708013773454"
        "04406547672527347461675977525898934323525699110091319645936590895026702175488156460594377056009524251485160784"
        "1979245586880208866747279307676303889206098080334141095498113120491826011797819568010033703314385766397392583",
        "17."
        "09292592810987323085689096651817060904963589029512160522530941890827581847057687957289096068541058183084099110"
        "54301261308877905438819451701225816708775064163858458811220345957117443399486918793485162274149097723524277233"
        "81307136312192527194398703992339257139025461873121242339773525646882099071218455368070360012094043767404721710"
        "93602096783442686297710315751606835429308507075824176698105523506620931482562755978775376214511250812195885566"
        "87019419120479317429823172107590283143446497248490970649768152464725806707130059311761908605648006129152794658"
        "28728998575622054464917488746547899780983777131311642945405044933687700992228213471399937554874267824007208862"
        "01185312021574067550087244967813610766067586111699433465749964814066749657297355011066259559855409268996938163"
        "41047327437159278090340558983247348348622180363741547423011416478126650485047347378185921229539834418983942666"
        "68099196342610809449297358794349398680810394712741903077531810498355933651769987486764243099026725730690831877"
        "5712545165790980870833770357342634597715966182879292691159156387989718754333799048530940386842225448232251458",
        "17."
        "18457766246935043992785524276601217590143558721734862250072038240243728404369104075497313153127206416613120155"
        "14244338979423498353490793511266853712442843525886341505446387699669856777170226001440090937353259650728051196"
        "43341927076098445506587163233137151789343227901578709257933753169161253949701854384420333694583107005741557086"
        "14165226613411420552937627834412777870203815320460557839829240191701480713368521679679427236596575241748038038"
        "03905087308384416784431284819770363195053820968301578868801810080541678810607866404802296225462621786603189632"
        "40303917660847084116465971759326225893275990074612086695692667958539769638272646913645638399349033677941373692"
        "71107131219921824583328211625491361609763694095238834899003692021402227310892213604633870168252615523994160092"
        "15359001253955577936829021948708246676341112942870776695271407974775582902477226815721865733052145151608560413"
        "76057217301543946090725213403325669137074949556919895413752145392355663277437633356907240495896982181748702266"
        "0731421354245851272428708325787898296874181411803997899332362008586913072670711064770984500148015011826261837",
        "17."
        "27574317044075408519044501539497903801866874586542206849152303865032758254070631606045172887345461195056443916"
        "94970728295669021023983949819859759900830880079629779705059154865670128635551815720536815841099639525614851417"
        "68953808491468086742419682163408958624144213019203883451244657001188829080210013359418255598633772348738641653"
        "44334682632244656233052746413301305407954119193917112679343719411075932055505816464244974847901904743007217856"
        "29523248847972136552642048161447129520586107875881613551369904113055686380180469790846706208691893855593511420"
        "75097353051116528355562759788774588713462763414551741605074815880089051442555463932137787092390985512150087898"
        "33833958874786572272239625096274365009043724920986705896758832146741568344564546633629308822836248451274657312"
        "75714349781314030602882871329526710766294672136474269162102821374407938659858184740917810129868058466378108500"
        "49965570908390324904667436650919115376143007595141143946975477340928287450813472860991382957450091050320908105"
        "0228705417132900939410588699788540167873020190018123072161219964179184690554184874930100756126982018853834025",
        "17."
        "36643010939842382471235105497909842893061347482910224742909586648883692687109748600279075763477233031471261764"
        "14184787060588912832469046111702601777464890642632251154060816817161334316918823566501136820770035716334732686"
        "18161370540232547230765011660610678347706101216301120462332270486556205728312463947537274846803558500731691464"
        "61198952384761778954132812647621968175404067280215848364345373882722056625322626216432834719556005941932134181"
        "66120727080989351217403325023680868046291273159196135079849504794468566646008463271904849506404907608613825464"
        "39198914596266137669012649675254988676019223931065633615787988759385585995882330986686006117940645712042970401"
        "52434361605329794921444752517434610815709787438842484269831962473512070815566922897586665199279160289590755890"
        "74583772201210742744694427687226168211338842746789032366011901448502121835024794286923051973016164255684120993"
        "15313914949080632065396070233300793621763870359091769241881422270199715880475550128718123207901504417949066109"
        "8796848674027302976104705585992281369648433223442373992912484021774309627757116258683761986486802220878937797",
        "17."
        "45664593781434131916922250154260862740311362355829352436323853138582018777017040364840325207496421311337784509"
        "55342272025602510829158221972777670586061661701347328186526764805212080639525455982292015938346325289124302844"
        "33244772566961770292191780850052527418760053662080114781916361358783723872887199722599102508052518044253446686"
        "45558248624146623399557336218102648627761873744199012852404314901759744493783179273983815197099195099336895631"
        "16335690204265534027606560764875449531405967998639356231702870487782798115026659692007825259723146752469612698"
        "76733146390178006249351968922527810928337831027438955967903883417068020651725953727040417543224863389370190307"
        "78680346941979846980184543999953487126914769449384627016539068038771835516883716514105574766819649729508833168"
        "89946306025542494264115645449898893118484226513921500673490556592825150254681189771557834158711489644867165103"
        "16501757359908620524921876749728765439390513556068129554293235225949076390718806086784370140208270472507926588"
        "6683176519491584308173914664681606671056250177292407244890772315688524722948557271250549147036005452988137053",
        "17."
        "54639792241700351691035699367731677104890718426956821640946503439605558225489382462617086864640086281206980865"
        "64271575140642653268871532667049895917630355233940483632068661179612946301911395716185300516412585342889806163"
        "05897039457680785291235730766909268092549430669200289626051927041560228580907033054444893426486648638316110177"
        "88076664391777123773494043442049818254612659167017134399076348816281420000301474815415669849167769850699748713"
        "50878105191169601874427236107028216631331508432342933927262432252048403053983936328555651202085666743721276666"
        "41605328790858270839901941611672829039104113777689951496368545322634491393059518891968798592543964049066838119"
        "71412683246076456269994187436757076077822079779412355583039661531424863510617019228185414399909550338637062925"
        "65895764497302237144629129915168217734367589190606338115923850388544120876370105674692788127644053617727607207"
        "23908137915079739128487140280101328151657036608096389221447223411262185877793236822424326685167227229712759336"
        "5190407239608295928071192401106453278389676417859068237527688061268702479082098130209555748133337115265799590",
        "17."
        "63569314502238470516326263369121291599530476311602312551942632147197367453450565740063340529477837047898511246"
        "50942357806440283438448075865374177648755421744889004812088237415174002112721888433569481184443980026560025069"
        "43982233003640824565969970560720816740945971824478145915185970128692068679139758731692468366100636144656973628"
        "03866591699434632439698537375163084036473898998999432889645390740457773960610942456150207945696189698107672861"
        "61759163196190210263374998456288778623199988233761901113536316735857956970778148341712538680960137046414511920"
        "33412530635473632141870512978566923170290529625511867856416279557442458833716555382620044806673053130462145183"
        "81362190212443795049741160960979303482021464950205131547052190765017264272814050531573073690585639119853283953"
        "72478199002802154489559015174957595775902617263259894306671438880488104887489699278033942889387921168112741333"
        "33678757892227848675754252455535759887358064686123290849736624010135939967901868338733602676884432063676890850"
        "5456317105807294092097672788610628498171867123780698747648210099920520967511623044818811130645542567309932834",
        "17."
        "72453850905516027298167483341145182797549456122387128213807789852911284591032181374950656738544665416226823624"
        "28257066623615286572442260252509370960278706846203769865310512284992517302895082622893209537926796280017463901"
        "53514797205167001901852340185854469744949126403139217755259062164054193325009063984076137334774751534336679897"
        "89365851836408795451165161738760059067393431791332809854846248184902054654852195613251561647467515042738761056"
        "10799612710721006037204448367236529661370809432349883166842421384570960912042042778577806869476657000521830568"
        "51254133966369446541815107166938833219429293570622688652244205421499480499207564863988748385059306402182140292"
        "85811233064978945203621149078962287389403245978198513134871266512506293260044656382109675026812496930595420461"
        "56076195221739152507020779275809905433290066222306761446966124818874306997883520506146444385418530797357425717"
        "91856359597499599522638492422038891039664064472939728413450430021405642334330392617561341763363200170376541634"
        "7632066927654181283576249032690450848532013419243598973087119379948293873011126256165881888478597787596376136",
    }};

    T pi = static_cast<T>(
        "3."
        "14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651"
        "32823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461"
        "28475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920"
        "96282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179"
        "31051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798"
        "60943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901"
        "22495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837"
        "29780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083"
        "81420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909"
        "2164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315"
        "2");

    unsigned max_err = 0;
    for (unsigned k = 0; k < data.size(); k++) {
        T val = sqrt(pi * k);
        T e = relative_error(val, T(data[k]));
        unsigned err = e.template convert_to<unsigned>();
        if (err > max_err) {
            max_err = err;
        }
    }
    std::cout << "Max error was: " << max_err << std::endl;
#if defined(BOOST_INTEL) && defined(TEST_FLOAT128)
    BOOST_TEST(max_err < 30);
#else
    BOOST_TEST(max_err < 20);
#endif
    //
    // Some tricky special cases:
    //
    BOOST_CHECK((boost::math::isfinite)(sqrt((std::numeric_limits<T>::max)())));
    BOOST_CHECK((boost::math::isfinite)(sqrt((std::numeric_limits<T>::min)())));
}

int main() {
#ifdef TEST_BACKEND
    test<
        nil::crypto3::multiprecision::number<nil::crypto3::multiprecision::concepts::number_backend_float_architype>>();
#endif
#ifdef TEST_MPF_50
    test<nil::crypto3::multiprecision::mpf_float_50>();
    test<nil::crypto3::multiprecision::mpf_float_100>();
#endif
#ifdef TEST_MPFR_50
    test<nil::crypto3::multiprecision::mpfr_float_50>();
    test<nil::crypto3::multiprecision::mpfr_float_100>();
#endif
#ifdef TEST_MPFI_50
    test<nil::crypto3::multiprecision::mpfi_float_50>();
    test<nil::crypto3::multiprecision::mpfi_float_100>();
#endif
#ifdef TEST_CPP_DEC_FLOAT
    test<nil::crypto3::multiprecision::cpp_dec_float_50>();
    test<nil::crypto3::multiprecision::cpp_dec_float_100>();
#ifndef SLOW_COMPLER
    // Some "peculiar" digit counts which stress our code:
    test<nil::crypto3::multiprecision::number<nil::crypto3::multiprecision::cpp_dec_float<65>>>();
    test<nil::crypto3::multiprecision::number<nil::crypto3::multiprecision::cpp_dec_float<64>>>();
    test<nil::crypto3::multiprecision::number<nil::crypto3::multiprecision::cpp_dec_float<63>>>();
    test<nil::crypto3::multiprecision::number<nil::crypto3::multiprecision::cpp_dec_float<62>>>();
    test<nil::crypto3::multiprecision::number<nil::crypto3::multiprecision::cpp_dec_float<61, long long>>>();
    test<nil::crypto3::multiprecision::number<nil::crypto3::multiprecision::cpp_dec_float<60, long long>>>();
    test<nil::crypto3::multiprecision::number<
        nil::crypto3::multiprecision::cpp_dec_float<59, long long, std::allocator<char>>>>();
    test<nil::crypto3::multiprecision::number<
        nil::crypto3::multiprecision::cpp_dec_float<58, long long, std::allocator<char>>>>();
    // Check low multiprecision digit counts.
    test<nil::crypto3::multiprecision::number<nil::crypto3::multiprecision::cpp_dec_float<9>>>();
    test<nil::crypto3::multiprecision::number<nil::crypto3::multiprecision::cpp_dec_float<18>>>();
    // Check up to 1000 multiprecision digits.
    test<nil::crypto3::multiprecision::number<nil::crypto3::multiprecision::cpp_dec_float<500>>>();
    test<nil::crypto3::multiprecision::number<nil::crypto3::multiprecision::cpp_dec_float<1000>>>();
#endif
#endif
#ifdef TEST_FLOAT128
    test<nil::crypto3::multiprecision::float128>();
#endif
#ifdef TEST_CPP_BIN_FLOAT
    test<nil::crypto3::multiprecision::cpp_bin_float_50>();
    test<nil::crypto3::multiprecision::number<nil::crypto3::multiprecision::cpp_bin_float<
        35, nil::crypto3::multiprecision::digit_base_10, std::allocator<char>, boost::long_long_type>>>();
#endif
    return boost::report_errors();
}
